$.ajax({
type: "POST",
url: "mypage.php",
data: "name=John&location=Boston",
success: function(data){
// <- I'm asynchronous !!!
var newVar = (data);
}
});
// <- I return before you set me!
return newVar;
AJAX请求与服务器交谈,然后在一段时间后调用success
方法。您可以强制success
在请求完成之前不会运行。这意味着你不能返回任何数据。
相反,您需要传递回调并使用异步编程。
你想要做的就是这样。
function myFunction(callback) {
$.ajax({
type: "POST",
url: "mypage.php",
data: "name=John&location=Boston",
success: function(data) {
callback(data);
}
});
}
myFunction(function (data) {
// do stuff.
});
PHP看起来不错。
作为替代方案,您可能更愿意使用jQuery的延迟语法。
function myFunction() {
return $.ajax({
type: "POST",
url: "mypage.php",
data: "name=John&location=Boston"
});
}
$.when(myFunction()).then(function(data) {
// handle data return
someOtherFunction(data);
}, function(error) {
// handle ajax error.
});
您应该最有可能使用成功方法中的数据作为参数调用回调函数,但尚不清楚您要如何处理此示例。 PHP是如何相关的? 'return newVar'是错误的。 – mraaroncruz 2011-05-09 21:02:48