JQuery AJAX语法错误需要明亮的眼睛

时间:2013-08-22 13:07:39

标签: jquery ajax

我使用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);}
}

3 个答案:

答案 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函数。您也可以声明错误和已完成的功能。