儘管這個問題已經得到解答,而且我經歷了其中一些問題,但我仍然無法找到我做錯了什麼。如何返回ajax導致成功?
基本上我有回到阿賈克斯的成功結果的功能:調用函數
var Functioncalling = function(id){
var Infotoreturn=null;
formdata = {
'id': id
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/pr/servlet',
data: formdata,
contentType: "text/html",
success: function(result){
console.log("1="+result);
Infotoreturn = result;
}
});
console.log("2="+Infotoreturn);
return Infotoreturn;
}
:
var idreturned = Functioncalling(idvalue);
console.log("3="+idreturned);
現在在我的第一個控制檯輸出我得到確切的數據,因爲我我想應該。但是第二個和第三個輸出都是空的。
您不能返回異步請求的結果。異步請求發生在其餘代碼的(同步)流程之外,因此,當您嘗試返回結果時,請求尚未解決。您需要了解承諾或jQuery中的延期對象。 – Utkanos
添加到@Utkanos所說的內容中,最後的返回語句爲時過早。變量'Infotoreturn'將爲空,因爲Ajax調用是異步執行的,即並行執行。主要功能將在其操作完成之前返回。控制檯會記錄結果,但對於變量來說已經太晚了。 – Manngo
@Manngo你的意思是提前爲變量,對不對? – jaksdfjl