我有一个像这样的document.ready函数;
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
设置为echo 1234
。但是我得到了警觉,因为"未定义"。我怎样才能解决这个问题?预期的警报是" 1234" (来自ajax处理程序的回复)。
答案 0 :(得分:1)
这是异步的。使用回调:
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);
});
答案 1 :(得分:0)
因为你在ajax调用完成之前返回了值,ajax调用默认为异步,你可以在alert
回调中success
,此时你的变量将具有你设置的值:
function myfun(){
var xx;
$.ajax({
type: 'POST',
url: 'handler.php',
cache: false,
success: function(result) {
xx = result;
alert(xx);
},
});
}
myfun();
答案 2 :(得分:0)
这是异步调用的问题。您可以重写代码,例如:
var xx;
var a;
function myfun(){
$.ajax({
type: 'POST',
url: 'handler.php',
cache: false,
success: function(result) {
xx = result;
},
});
}
myfun();
alert(xx);