我正在尝试使用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不太熟悉,所以我不确定为什么这样做不起作用。
答案 0 :(得分:0)
了解复制和粘贴的代码。了解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);
},