我使用jquery进行了这个ajax调用但是在chrome throws中
Uncaught SyntaxError: Unexpected token :
和Mozilla抛出
SyntaxError: invalid label
200: function(){alert(200);},
这是我的代码,我感谢你做错了很多。
更新它现在有效我正在混合成功功能和状态抱歉错误
function servletCaller()
{
try
{
$.ajax(
{url:'deleteImageHelper.do',dataType: 'json',context: document.body,
success: function(data){},
statusCode:
{
200: function(){alert(200);},
404: function(){alert(404);},
500: function(){alert(500);}
}
});
}
catch(Exception){alert(Exception);}
}
答案 0 :(得分:3)
拥有格式干净的代码是值得的。这正是原因。
在将代码格式化为可读的方式之后,这是您的代码:
function servletCaller()
{
try
{
$.ajax(
{
url: 'deleteImageHelper.do',
dataType: 'json',
context: document.body,
success: function(data)
{
statusCode:
{
200: function(){alert(200);},
404: function(){alert(404);},
500: function(){alert(500);}
}
}); //This ');' is misplaced. It should be on the next line
} //Need a ); here
} catch(Exception) { alert(Exception); }
}
正如您在我的评论中所看到的,您已将);
放在错误的}
之后。现在,代码已经以干净的方式格式化,您可以轻松发现问题。
此外,您的成功函数中的代码块不会执行。你可能希望它是这样的:
var statusCodeCallbacks = {
200: function(){alert(200);},
404: function(){alert(404);},
500: function(){alert(500);}
};
//assuming statusCode is found at data.statusCode
statusCodeCallbacks[data.statusCode](); //You still need to handle the case that you get a status code that isn't in your object.
由于statusCodeCallbacks
是静态的,因此您也可以将其移出success
函数,以提高性能。
正如另一位用户发布的那样,如果您使用此AJAX请求的状态代码来执行statusCodeCallbacks
对象中的函数,那么您希望在complete
而不是{{ 1}}。更好的是,在success
调用本身上使用.always()
,因为$.ajax()
和success
已被弃用。
答案 1 :(得分:1)
有很多错误,下次你可以试试JSHint ......
function servletCaller() {
try {
$.ajax({
url: 'deleteImageHelper.do',
dataType: 'json',
context: document.body,
success: function (data) {
var statusCode = {
200: function () {
alert(200);
},
404: function () {
alert(404);
},
500: function () {
alert(500);
}
};
}
});
} catch (Exception) {
alert(Exception);
}
}
此外,您的success
方法没有做任何事情。
答案 2 :(得分:0)
向服务器发出Ajax调用时。您可以在firebug的“网络”选项卡中查看该呼叫的响应。检查一下服务器是否正在返回Json字符串。
当状态代码为other时,则不调用ajax调用的200 Success函数。您也可以声明错误和已完成的功能。