无法在延迟对象中访问jquery ajax responseText

时间:2014-10-08 15:26:46

标签: javascript jquery ajax

我需要根据对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调用发送到另一个函数?任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:2)

首先,只需在.done调用中删除函数包装器 - 只需调用.done(someFunction)即可。这将确保AJAX调用生成的所有参数都传递给someFunction。它还将确保this调用中设置的任何$.ajax上下文也能正确传递。

修复此问题后,应将jqXHR对象作为第三个参数传递给someFunction,以便您可以使用它来访问.responseText

function someFunction(data, status, jqXHR) {
    var text = jqXHR.responseText;
    ...
}

promiseObj.done(someFunction);