Php post ajax中的返回数据无效
我正在尝试使用$.post检索数据并将其存储为返回类型。然而,我总是得到一个未定义的错误 如果我这样做:Php post ajax中的返回数据无效,php,jquery,ajax,post,Php,Jquery,Ajax,Post,我正在尝试使用$.post检索数据并将其存储为返回类型。然而,我总是得到一个未定义的错误 如果我这样做: function get_list(){ $.post('php/reverse.php', function(data){ alert(data); }); } function get_image_list(callback) { $.post('php/reverse.php', function(data){ ca
function get_list(){
$.post('php/reverse.php', function(data){
alert(data);
});
}
function get_image_list(callback) {
$.post('php/reverse.php', function(data){
callback(data);
});
}
get_image_list(function(data) { alert(data); });
一切都很完美。但如果我做了类似的事情
function get_list(){
$.post('php/reverse.php', function(data){
return data;
});
}
alert(get_list());
然后它突然给了我一个未定义的错误。有人能告诉我我做错了什么吗。您不能在异步上下文中返回此类数据 您必须传递一些在成功时执行的回调:
function get_image_list(handler){
$.post('php/reverse.php', function(data){
handler(data);
});
}
get_image_list(function(data){alert(data);});
这是因为AJAX的异步特性。您无法从回调函数返回值,因为在AJAX调用触发回调时,所有其他代码早已执行。您的get\u image\u列表实际上没有返回任何内容,因为它不包含return语句。AJAX调用是异步执行的。要使代码段按预期工作,它必须如下所示:
function get_list(){
$.post('php/reverse.php', function(data){
alert(data);
});
}
function get_image_list(callback) {
$.post('php/reverse.php', function(data){
callback(data);
});
}
get_image_list(function(data) { alert(data); });
这并不理想,但您似乎还不熟悉异步调用。请调查回拨。 话虽如此,这是您正在寻找的代码:
function getList(){
var dataToReturn;
$.ajax({
url: "php/reverse.php",
async: false
}).done(function(data){
dataToReturn = data;
});
return dataToReturn;
}
alert(getList());
通过将async设置为false,可以强制代码等待数据准备好使用。这样,您就可以分配给“dataToReturn”,并在函数执行结束时返回它。默认情况下,async为true,因此执行在数据准备就绪之前到达函数的末尾,因此没有返回任何内容。考虑范围。您告诉匿名函数返回数据,但包含此post调用的函数什么也不返回。那么我如何修复它?请考虑get_list函数在匿名回调函数开始执行之前返回。get_list函数返回undefined,因为它在执行过程中从不命中return语句。returndata语句位于回调函数内部,不作为get_list函数的一部分执行。回调函数是在异步POST请求完成后执行的,但是调用它的代码并不关心它返回什么。太棒了!很好用!