Search code examples
javascriptvelo

Autofill state and city based on zip code input using Sepomex API


I am trying to autofill city and state fields based on zip code input using sepomex API (for Mexico), on a site in corvid by wix, which is based on javascript but I think there is something wrong in the line json.response[0]["ciudad"].

$w.onReady(function () {
    $w("#input1").onInput(() =>{
    let zipcode = $w("#input1").value;
    $w("#input2").value = "";
    $w("#input3").value = "";

    if (zipcode.length === 5) {
        let apiUrl = "";

        apiUrl = "https://api-sepomex.hckdrk.mx/query/info_cp/";

            fetch(apiUrl + zipcode, {method: 'get'})
            .then((httpResponse) => {
                if (httpResponse.ok) {
                    return httpResponse.json();
                }
                else{
                    return Promise.reject("fetch was not successful")
                }
            })
            .then((json) => {
                console.log(json);
                let response = json.response;

                $w("#input10").value = json.response[0]["ciudad"];
                $w("#input11").value = json.response[0]["estado"];
                
                $w("#text148").collapse();
            })
            .catch(() =>{
                $w("#text148").expand()

            })
}
})

I can't display any data There is the output on API

[
    {
        "error": false,
        "code_error": 0,
        "error_message": null,
        "response": {
            "cp": "44110",
            "asentamiento": "Vallarta Poniente",
            "tipo_asentamiento": "Fraccionamiento",
            "municipio": "Guadalajara",
            "estado": "Jalisco",
            "ciudad": "Guadalajara",
            "pais": "México"
        }
    }
]

Solution

  • Solved

    .then((json) =>{
                
                let response = json[0].response;
                
    
                $w("#input11").value = json[0].response["ciudad"];
                $w("#input10").value = json[0].response["estado"];
                $w("#text148").collapse();
    })