$.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