为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
Why is Jquery $.ajax firing all statusCode on function call even with successful call
我有一个简单的Jquery ajax函数调用,如下所示。
function getUsers(){
var jqxhr = $.ajax({
url: "../assets/js/data/users.json",
type: "GET",
cache: true,
dataType: "json",
statusCode: {
404: handleError404("Error at getUsers();"),
500: handleError500("Error at getUsers();")
},
success: function (data) {
$.each(data, function(index, element) {
console.log(element.name);
});
}
});
}
错误句柄函数如下所示。
function handleError500(customMsg){
alert("Oops, there was an error: 500");
console.log("ERROR: 500 | "+customMsg);
}
function handleError404(customMsg){
alert("Oops, there was an error: 404");
console.log("ERROR: 404 | "+customMsg);
}
出于某种奇怪的原因,即使在没有明显错误500或404的成功调用中,statusCode函数也会启动。
有什么想法吗?非常感谢。
这是一个常见的Javascript gotcha,但您实际上是这些函数的firing
!
名称后面的()
此时将实际调用该函数。
404: handleError404() // <-- it calls it immidiately
您需要做的是创建一个匿名函数,当错误实际发生时,该函数稍后将被调用,该函数内部将调用您的函数。
statusCode: {
404: function () { // <-- anonymous function won't get called until it needs to
handleError404("Error at getUsers();")
},
500: function () {
handleError500("Error at getUsers();")
}
},
附带说明:如果没有向函数传递参数,实际上,您可以提交匿名函数
function () { /* function call */ }
部分,然后调用您的函数!
statusCode: {
404: handleErrors, // since no parameters are passed, this could be done
500: handleErrors
}
因为在对象属性的定义中,您实际上是在调用函数,而不是在代码实际发生时定义要调用的函数。
你可以尝试的一件事是:
statusCode: {
404: function() { handleError404("Error at getUsers();") },
500: function() { handleError500("Error at getUsers();") }
},
相关文章:
- 尽管链接成功并已成功下载,但未找到NPM模块
- 在另一个函数成功结束后调用该函数
- 在ajax成功后,cluetip不适用于首次点击活动元素
- jQuery成功函数中的ajax成功函数
- jQuery触发器点击未从AJAX成功工作
- 如何使用jQuery可编辑插件检查ajax是否成功完成
- 执行ajax成功函数-jQUERY
- 解析云代码错误:解析.错误{代码:141,消息:“未调用成功/错误”}
- 如何从servlet获取数据到ajax成功
- 成功回调永远不会被JSONP请求调用
- 将表单张贴到MailChimp,但显示动态成功页面
- ajax请求成功,但可以'我看不到我的数据
- I'我试图在文本区域中进行特定的输入,调用特定的javascript函数,但没有成功;不起作用
- AngularJs|Don'在成功加载所有指令htmls之前,不显示页面
- Node.js Passport成功登录后显示用户名
- 通过mvc中的ajax动作链接获取关于成功的响应头
- 查询后websql成功回调无法访问变量
- AJAX调用在chrome扩展中未成功
- 绑定到 x 可编辑的成功函数未使用正确的参数执行
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功