[英]Cannot access jquery ajax responseText in a deferred object
我需要基於對Web方法的Ajax調用來創建Promise。 最初,我使用此方法進行工作:
$.ajax({
url: window.location.pathname + "/LoadPage"
)}.done(function(data){
//do some stuff
}).fail(function(){
//do other stuff
});
然后,我遇到了需要等待加載某些內容然后再執行其他操作的問題,因此我決定創建一個變量來保存Promise對象。
var promiseObj = $.ajax({...});
然后創建一個命名函數來調用
function someFunction(data){...}
從服務器訪問響應
var someData = promiseObj.responseText;
並稱它為
promiseObj.done(someFunction(someData));
而且沒有用 我收到未定義的錯誤。
所以我嘗試只是console.log
它
console.log(promiseObj) //shows the object
console.log(promiseObj.responseText) //gives undefined
我究竟做錯了什么? 如何使用此方法將數據從ajax調用發送到另一個函數? 任何幫助,將不勝感激。
首先,只需刪除.done
調用中的函數包裝器-只需調用.done(someFunction)
。 這將確保AJAX調用生成的所有參數都傳遞給someFunction
。 它還將確保也正確傳遞$.ajax
調用中設置的任何this
上下文。
修復此問題后,應該找到jqXHR
對象作為第三個參數傳遞給someFunction
,因此您可以使用它來訪問.responseText
。
function someFunction(data, status, jqXHR) {
var text = jqXHR.responseText;
...
}
promiseObj.done(someFunction);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.