Ajax成功数据分配给数据为[0]的变量是未定义的


ajax success data assignment to variables with data[0] is undefined

我正在尝试使用ajax从javascript代码中的数据库中选择数据,该ajax调用php脚本与mysql查询。pgp代码工作正常,因为我可以看到带有警告的ajax成功结果。但是当我尝试将数据分配给变量时,它们在控制台中显示为未定义或NaN。下面是我的代码:

    function zoomBldg() {
        bldgId = document.getElementById("bldgzoom").value;
        var bldgStreetAddress,zoomLat,zoomLng,bldgDescription,bldgDefaultPic,zoomCenter;
        console.log('bldgId',bldgId);
        $.ajax({
            url: "getBldgInfoWajaxGETtest.php", 
            type: "POST",             
            data: {bldgId : bldgId},
            dataType: 'json',
            cache: false,
            success: function(data)
            {
                alert(JSON.stringify(data));
                bldgStreetAddress = data[0];
                zoomLat = data[1];
                zoomLng = data[2];
                bldgDefaultPic = data[3];
            },
            error: function (request, status, error) {
                console.log(error);
            }
        });
        zoomLat = parseFloat(zoomLat);
        zoomLng = parseFloat(zoomLng);
        zoomCenter = {lat:zoomLat, lng:zoomLng};
        console.log('bldgId',bldgId);
        console.log('bldgStreetAddress',bldgStreetAddress);
        console.log('zoomLat',zoomLat);
        console.log('zoomLng',zoomLng);
    }

出现在警报中的结果是:

[{"0":"50弗里蒙特街","1","37.790505","2":"-122.397259","3":空,"building_address":"50弗里蒙特街","纬度":"37.790505","经度":"-122.397259","default_pic":零}]

控制台的结果如下:

bldgId 17bldgId 17bldgStreetAddress未定义zoomLat南zoomLng南

我复制了数据[0]等代码从一个例子在线,但我不太熟悉json,所以我不知道为什么不工作

理解您复制和粘贴的代码。学习json是如何工作的,JSON.parseJSON.stringify做什么。

查看json结构。信息以数组形式存在。所以data是一个数组。对象的每个键都是字符串,而不是整数。

data[0]["1"]

稍后还会调用成功函数。因此,不会设置这些值。为了解决这个问题,我会做任何需要成功回调中的值的代码。

            success: function(data)
            {
                alert(JSON.stringify(data));
                bldgStreetAddress = data[0]["0"];
                zoomLat = data[0]["1"];
                zoomLng = data[0]["2"];
                bldgDefaultPic = data[0]["3"];
                zoomLat = parseFloat(zoomLat);
                zoomLng = parseFloat(zoomLng);
                zoomCenter = {lat:zoomLat, lng:zoomLng};
    console.log('bldgId',bldgId);
    console.log('bldgStreetAddress',bldgStreetAddress);
    console.log('zoomLat',zoomLat);
    console.log('zoomLng',zoomLng);
            },