0

我有这个使用 jquery 的 ajax 调用,但在 chrome 中抛出

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);}
}
4

3 回答 3

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而不是success. 更好的是,.always()$.ajax()调用本身上使用,因为successcomplete已被弃用。

于 2013-08-22T13:15:37.310 回答
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方法也没有做任何事情。

于 2013-08-22T13:18:20.783 回答
0

当 Ajax 调用被触发到服务器时。您可以在 firebug 的 Network 选项卡中查看该调用的响应。一旦检查服务器是否返回 Json 字符串。

并且当状态码不是 200 Success 的 ajax 调用函数时不会被调用。您也可以声明错误和已完成的功能。

于 2013-08-22T13:24:11.420 回答