我有一个从PHP中获取一些JSON的javascript函数。当我得到JSON时,我的计划是解析它并将其加载到数组中然后返回该数组,以便我可以在任何地方使用数据。
这是ajax函数:
function get_ajax(route_val){
$.ajax({
url: "ajax.php",
dataType: 'json',
data: {
route: route_val
},
success: function(result) {
if(result.error == true){
alert(result.message);
}else{
$.each(result, function(key1, value1){
//console.log(key1 + ":" + value1);
returnarray[key1] = value1;
});
return returnarray;
}
}
});
}
</script>
如果我然后尝试定义say var arr = get_ajax('1'),则arr将为空。我可以从函数内部从数组中发出警报和console.log内容,但返回它什么都不返回。
它似乎不存在于函数之外。
有什么想法吗?
答案 0 :(得分:6)
您错误地使用Ajax
,其想法不是让它return
,而是将数据移交给处理数据的callback
函数。< / p>
IE:
function handleData( responseData ) {
// do what you want with the data
console.log(responseData);
}
$.ajax({
url: "hi.php",
...
success: function ( data, status, XHR ) {
handleData(data);
}
});
return
提交处理程序中的任何内容都不会执行任何操作,您必须切换数据,或者直接在成功函数内执行您想要的操作。
答案 1 :(得分:3)
问题是你的成功函数没有将你的数组返回到任何地方。您需要做的是在成功处理程序内部完全处理您的数据,或者调用另一个方法/函数来执行所需的操作。
假设它可能看起来像这样:
success: function(result) {
if(result.error == true){
alert(result.message);
}else{
$.each(result, function(key1, value1){
returnarray[key1] = value1;
});
//Something like this
ajaxHandlers.handleReturnedArray(returnarray);
}
}
答案 2 :(得分:0)
如果你绝对想让它返回某些东西,你可以做同步请求(尽管它不是AJAX(异步 JavaScript和XML))。
function get_ajax(route_val){
var returnarray = [];
$.ajax({
url: "ajax.php",
dataType: 'json',
async: false,
data: {
route: route_val
},
success: function(result) {
if(result.error == true){
alert(result.message);
}else{
$.each(result, function(key1, value1){
returnarray[key1] = value1;
});
}
}
});
return returnarray;
}