我需要根据对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调用发送到另一个函数?任何帮助,将不胜感激。
答案 0 :(得分:2)
首先,只需在.done
调用中删除函数包装器 - 只需调用.done(someFunction)
即可。这将确保AJAX调用生成的所有参数都传递给someFunction
。它还将确保this
调用中设置的任何$.ajax
上下文也能正确传递。
修复此问题后,应将jqXHR
对象作为第三个参数传递给someFunction
,以便您可以使用它来访问.responseText
。
function someFunction(data, status, jqXHR) {
var text = jqXHR.responseText;
...
}
promiseObj.done(someFunction);