Chain jQuery AJAX 承诺与自定义承诺
Chain jQuery AJAX promises with custom ones
我有一个特定的网站,我不能像往常一样依赖 HTTP 状态代码在 AJAX 调用后触发成功或失败。
我采用的一种解决方法是将响应构建为 JSON 对象,该对象具有 "type" 属性,其值为 "success" 或 "error"。
我有一个辅助函数:
function myAjaxCall(data) {
return $.ajax({method: 'post', url: myUrl, data: data});
}
我想要完成的是使这成为可能:
myAjaxCall(data).then(successFunction, failFunction);
我试过插入这个函数:
function myPromise(response) {
var d = $.Deferred();
response.type == 'success' ? d.resolve() : d.reject();
return d;
}
但我无法想象在代码中插入我的承诺的干净方法。
只需将其与 then
链接起来即可:
function myAjaxCall(data) {
return $.ajax({method: 'post', url: myUrl, data: data}).then(myPromise);
}
您的 myPromise
函数将接收响应作为其参数,并且 then
对调用结果做出 return 承诺(您 return ).顺便说一句,您可能应该将响应的某些部分传递给 resolve
/reject
,以便您的 successFunction
和 failFunction
可以访问它。不确定您的回答到底是什么样子,但举个例子:
function myPromise(response) {
var d = $.Deferred();
response.type == 'success' ? d.resolve(response.data) : d.reject(response.error);
return d;
}
var myAjaxCall=function(data) { return $.ajax({method: 'post', url: "myUrl", data: data}); } console.log(myAjaxCall("data").responseText()); });
请检查您收到请求后的响应文本。然后将其传递给您想要的任何变量或函数。
我有一个特定的网站,我不能像往常一样依赖 HTTP 状态代码在 AJAX 调用后触发成功或失败。 我采用的一种解决方法是将响应构建为 JSON 对象,该对象具有 "type" 属性,其值为 "success" 或 "error"。
我有一个辅助函数:
function myAjaxCall(data) {
return $.ajax({method: 'post', url: myUrl, data: data});
}
我想要完成的是使这成为可能:
myAjaxCall(data).then(successFunction, failFunction);
我试过插入这个函数:
function myPromise(response) {
var d = $.Deferred();
response.type == 'success' ? d.resolve() : d.reject();
return d;
}
但我无法想象在代码中插入我的承诺的干净方法。
只需将其与 then
链接起来即可:
function myAjaxCall(data) {
return $.ajax({method: 'post', url: myUrl, data: data}).then(myPromise);
}
您的 myPromise
函数将接收响应作为其参数,并且 then
对调用结果做出 return 承诺(您 return ).顺便说一句,您可能应该将响应的某些部分传递给 resolve
/reject
,以便您的 successFunction
和 failFunction
可以访问它。不确定您的回答到底是什么样子,但举个例子:
function myPromise(response) {
var d = $.Deferred();
response.type == 'success' ? d.resolve(response.data) : d.reject(response.error);
return d;
}
var myAjaxCall=function(data) { return $.ajax({method: 'post', url: "myUrl", data: data}); } console.log(myAjaxCall("data").responseText()); });
请检查您收到请求后的响应文本。然后将其传递给您想要的任何变量或函数。