ajax jquery总是运行Error

时间:2011-04-21 13:27:00

标签: jquery

每次我运行我的ajax jquery函数时都会出错,这适用于我所有的ajax调用。 这是我的代码的一个例子

 function FindContact(CompanyName,DivisionName,FirstName,LastName) {

        $.ajax({
            url: 'Path',
            dataType: "json",
            async:false,
            type:'post',
            data: {'FirstName':FirstName,'LastName':LastName,'DivisionName':DivisionName,'CompanyName':CompanyName},
            success: DisplayContacts,
            error: ErrorMsg
        });
    }

解决这个问题我用这个

 function ErrorMsg(result) {
        if (result.status == 200 && result.statusText == 'OK') {
            DisplayContacts(result);
        }
        else {
            alert("FAILED : " + result.status + ' ' + result.statusText);
        }
    }

这很难,因为我需要为每个ajax请求创建这样的方法。

为什么它运行错误代码1st ???

请帮忙!

3 个答案:

答案 0 :(得分:49)

确保您返回的内容是有效的json。如果不是,并且服务器上的一切正常,$ .ajax将会出错而不是成功。

 function FindContact(CompanyName,DivisionName,FirstName,LastName) {

        $.ajax({
            url: 'Path',
            dataType: "html or json",
            async:false,
            type:'post',
            data: {'FirstName':FirstName,'LastName':LastName,'DivisionName':DivisionName,'CompanyName':CompanyName},
            success: DisplayContacts,
            error: ErrorMsg
        });
    }

快速检查json是否有效只是将dataType切换为html并看到成功被触发。如果它比你的json无效,如果你仍然得到同样的问题那么其他错误。

另一种检查是否返回有效json的方法是,打开firebug,当请求被发送时,单击响应选项卡,复制响应并到达jsonlint.com以检查其是否有效。

Jquery ajax docs

答案 1 :(得分:3)

我的解决方案是Accept-Type和Content-Type标头的不同之处。如果客户端请求的Accept-Type标头与服务器端响应的Content-Type标头不匹配,则Jquery将调用错误回调。

默认情况下,Jquery将Accept-Type标头设置为application/json。但是,我的服务器发送了一个Content-Type application/x-javascript的响应。我的修复是将服务器端响应Content-Type标头更改为相应的application/json

答案 2 :(得分:2)

使用jquery ajax进行ajax调用时遇到了同样的问题。我使用以下代码修复它:

A[i]

注意: dataType:'text'参数,它对我有用。