具有此功能:
var mapdata={};
console.log( mapdata[0].phones );
function fetchSteeringRecs()
{
$.ajax({
url : "./php/ajxcontrol.php",
type : "POST",
data : { dorecs:1 },
dataType : "json",
async : false,
//success : successHandler,
success : function(data) {
mapdata = data;
// console.log( data[0].phones );
}
});
}
/*
function successHandler(data, status ) {
console.log( data[0].phones );
}
*/
我想在将返回的数据分配给"mapdata"对象后使用它,但我在控制台中不断收到错误:
未捕获的类型错误:无法读取未定义的属性"phones"
可以看出,我已经尝试过从回调successHandler函数中访问数据,它工作正常-我也可以直接在ajax success函数中访问返回的数据(两者都被注释掉了)-但我真的需要它在"全局对象"mapdata"中
这有可能吗?还是我的技术错了?
一个简单的方法是创建一个处理返回数据的函数,并在成功回调中调用该函数(应该使用promise),如下所示:
function doStuffWithMapData(mapdata){
console.log(mapdata);
}
...
...
success : function(data) {
mapdata = data;
doStuffWithMapData(mapdata);
// console.log( data[0].phones );
}
同样,您可以使用全局变量:
var mapdata = {};
function doStuffWithMapData(){
console.log(mapdata);
}
...
...
success : function(data) {
mapdata = data;
doStuffWithMapData();
// console.log( data[0].phones );
}
您应该执行
success : function(data) {
console.log( data );
}
以找到输出数据结构。
编辑
使用这个
var mapdata;
function fetchSteeringRecs()
{
$.ajax({
url : "./php/ajxcontrol.php",
type : "POST",
data : { dorecs:1 },
dataType : "json",
async : false,
success : function(data) {
mapdata = data;
successHandler();
}
});
}
function successHandler() {
console.log( mapdata[0].phones );
}