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

时间:2016-09-29 21:32:20

标签: javascript php ajax

我正在尝试使用ajax从javascript代码中的数据库中选择数据,该jax调用带有mysql查询的php脚本。 pgp代码工作正常,因为我可以通过警报查看ajax成功结果。但是当我尝试将数据分配给变量时,它们在控制台中显示为undefined或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 Fremont Street”,“1”:“37.790505”,“2”:“ - 122.397259”,“3”:null,“building_address”:“50 Fremont Street”,“latitude” “:” 37.790505" , “经度”: “ - 122.397259”, “default_pic”:空}]

控制台中的结果是:

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

我从网上的例子中复制了数据[0]等代码,但我对json不太熟悉,所以我不确定为什么这样做不起作用。

1 个答案:

答案 0 :(得分:0)

了解复制和粘贴的代码。了解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);

            },