jquery + IE 7& 8 - 获取JSON数据时解析错误

时间:2011-05-15 11:35:32

标签: jquery json internet-explorer

我使用jQuery进行了一些非常简单的AJAX调用 我的c#webmethods被标记为[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 并返回格式正确的JSON 这在FF中效果很好,但在IE上却很疯狂:
调用错误处理程序,其中response具有status = 200(!!),responseText是我想要的有效JSON,statusText是{{1 }}。

我在SO上找到某个地方(现在似乎无法再找到它),问题是IE需要xml格式的响应,并在其他任何地方抛出解析器异常。
基本上,建议的解决方案是使用错误处理程序作为成功处理程序:

"parsererror"

这对我来说似乎很狡猾。有没有人知道其他任何解决方案?
附:我已经尝试过的事情:thesethis,建议的所有解决方案here

更新
不确定它是否相关,但IE也给出了这个奇怪的错误 -

$.ajax(
            {
                url: "SampleScriptService.asmx/Function",
                type: "POST",
                data: {},
                contentType: "application/json;",
                dataType: "json",
                success: function (result) {
                    SuccesFunction(result.d);
                },
                error: function (e) {
                    if (e.status != 200) {
                        alert("this is a real error");
                    }
                    SuccesFunction(JSON.parse(e.responseText).d);
                }
            });

不用说,我的htm文件包含~100行 如果我没有进行ajax调用(因此 - 不调用上面的错误处理程序),则不会出现此错误。

2 个答案:

答案 0 :(得分:1)

如果这只发生在IE上,那么是因为您的回复中出现了拼写错误。请显示您从服务器获得的json。你有一个对象,其中最后一个项目有一个trialling逗号。

喜欢这个

 { "l1" : 1, "l2" : 2, }

了解这是如何以, }结尾的?它需要以}结束。

只是为了确认,json看起来像没有周围的"

 {"d":
    {"__type":"PresentationObjects.UserPO",
     "Username":"admin",
     "FullName":"Admin User",
     "Password":"",
     "Roles":15,
     "UserRolesStrings": ["monitor","reports","schedule"­,"administration"],
     "IsAdministrator":true,
     "IsMonitor":true,
     "IsSchedule":true,
     "IsR­eports":true
    }
 }

我看到它说角色是15但你只显示4.你编辑了结果吗?

答案 1 :(得分:0)

好的,这完全是我的坏事。我从jQuery 1.4.4升级到jQuery 1.6并没有注意到我的页面实际上在所有浏览器上都有问题 问题出在验证插件上,如this question中所述 感谢所有花时间回答的人。