Javascript 涉及AJAX的函数不返回值-jQuery
我有一个document.ready函数,如下所示Javascript 涉及AJAX的函数不返回值-jQuery,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个document.ready函数,如下所示 function myfun(){ var xx; $.ajax({ type: 'POST', url: 'handler.php', cache: false, success: function(result) { xx = result; }, }); return xx; } var a;
function myfun(){
var xx;
$.ajax({
type: 'POST',
url: 'handler.php',
cache: false,
success: function(result) {
xx = result;
},
});
return xx;
}
var a;
a = myfun();
alert(a);
handle.php
设置为echo1234
。但我得到的警告是“未定义”。我怎样才能解决这个问题?预期的警报是“1234”(来自ajax处理程序的回复)。它是异步的。使用回调:
function myfun(){
return $.ajax({
type: 'POST',
url: 'handler.php',
cache: false
});
}
myfun().done(function(data){
console.log(data);
});
或者,如果您使用的是没有延迟对象的旧jQuery版本:
function myfun(done){
$.ajax({
type: 'POST',
url: 'handler.php',
cache: false,
success: done
});
}
myfun(function(data){
console.log(data);
});
因为您在ajax调用完成之前返回值,ajax调用默认为异步的,所以您可以在
成功
回调中发出警报
,此时您的变量将具有您设置的值:
function myfun(){
var xx;
$.ajax({
type: 'POST',
url: 'handler.php',
cache: false,
success: function(result) {
xx = result;
alert(xx);
},
});
}
myfun();
这是一个异步调用的问题。您可以重写以下代码:
var xx;
var a;
function myfun(){
$.ajax({
type: 'POST',
url: 'handler.php',
cache: false,
success: function(result) {
xx = result;
},
});
}
myfun();
alert(xx);
好吧问题解决了。。我会尽快将此标记为已接受。。。