Bac*_*ice 3 javascript ajax jquery
嘿家伙我有一个简单的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);
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
错误句柄函数看起来像这样.
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);
}
Run Code Online (Sandbox Code Playgroud)
由于一些奇怪的原因,即使在成功调用没有任何错误500或404的情况下,statusCode函数也会被触发.
有任何想法吗?谢谢.
这是一个常见的Javascript问题,但你实际上是firing关闭这些功能!
() 之后名称将实际调用该函数.
404: handleError404() // <-- it calls it immidiately
Run Code Online (Sandbox Code Playgroud)
你需要做的,是创建一个匿名函数,将被称为后在错误实际发生时,这里面它会调用你的函数.
statusCode: {
404: function () { // <-- anonymous function won't get called until it needs to
handleError404("Error at getUsers();")
},
500: function () {
handleError500("Error at getUsers();")
}
},
Run Code Online (Sandbox Code Playgroud)
旁注:如果你没有将参数传递给你的函数,你实际上可以省略匿名函数
function () { /* function call */ }部分,只需调用你的函数!
statusCode: {
404: handleErrors, // since no parameters are passed, this could be done
500: handleErrors
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |