簡體   English   中英

無法訪問延遲對象中的jQuery Ajax responseText

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM