【发布时间】:2021-04-15 22:42:58
【问题描述】:
我正在努力使用承诺的 ajax GET。 如果 ajax 遇到错误,例如 URL 不正确,则会调用 'error: function ()' 并在浏览器调试中收到错误消息“Uncaught (in promise) undefined”
ajax 函数的前两部分工作正常,即如果 ajax 返回成功,则 result.success 的两个内部条件都有效,我只是不知道如何解决 ajax 中的拒绝调用底部错误函数:
var myVariable = "test";
let promise = myFunction(myVariable);
promise.then(function () {
// Do Something
}).catch(function (message) {
console.error(message);
});
function myFunction(myVariable) {
return new Promise(function (resolve, reject) {
$.ajax({
type: "GET", //send it through get method
url: "/myURL/Edit?handler=GetBlahBlah",
data: {
sourceType: myVariable
},
contentType: "json",
dataType: "json",
success: function (result) {
if (result.success == false) {
reject(result.responseText); // This works
} else {
resolve(); // This works
}
},
error: function () {
reject("Error while making Ajax call! Get Trigger"); // NOT WORKING!!
}
});
});
}
【问题讨论】:
-
不,这没有帮助,不了解他们的用例,这看起来与我的示例不同。请解释一下。
-
他们遇到了同样的问题:在 ajax 选项对象上混合了 Promise 和成功/错误函数。您不需要将 .ajax 包装在一个 Promise 中,它已经返回了一个 Promise。我将使用示例代码添加答案。
标签: javascript ajax promise