我正在尝试使用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.parse
和JSON.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);
},