jquery + IE 7&8
我有几个非常简单的使用jQuery的AJAX调用。
我的c#webmethods被标记为[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
并返回格式正确的JSON。
这在FF中效果很好,但在IE上疯狂:
调用错误处理程序,其中response
status = 200
(!!), responseText
是我想要获得的有效JSON,而statusText
是"parsererror"
。
我在SO上看到了一个地方(似乎无法再次发现它),问题在于IE需要xml格式的响应,并在其他任何地方抛出解析器异常。
建议的解决方案基本上是使用错误处理程序作为成功处理程序:
$.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);
}
});
这对我来说似乎很难受。 有谁知道任何其他解决方案?
ps我已经尝试过的东西:这些,这里,所有的解决方案在这里建议
UPDATE
不确定它是否相关,但IE也给了这个奇怪的错误 -
Expected ';' Line: 101139813 Char: 5 Code: 0 URI: http://localhost/sample/samplePage.htm
不用说,我的htm文件包含~100行。
如果我不做ajax调用(因此 - 上述错误处理程序未被调用),则不会显示此错误。
如果这只发生在IE上,那么这是因为您的回复中存在拼写错误。 请显示您从服务器获得的json。 你有一个对象,最后一个项目有一个逗号逗号。
喜欢这个
{ "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,
"IsReports":true
}
}
我看到它说角色是15,但你只显示4.你编辑结果?
好吧,这完全是我的不好。 我从jQuery 1.4.4升级到jQuery 1.6,并没有注意到我的页面在所有浏览器上实际上都有问题。
正如这个问题所描述的那样,问题出在验证插件上。
感谢所有花时间回答的人。
上一篇: jquery + IE 7 & 8