我使用jQuery进行了一些非常简单的AJAX调用
我的c#webmethods被标记为[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
并返回格式正确的JSON
这在FF中效果很好,但在IE上却很疯狂:
调用错误处理程序,其中response
具有status = 200
(!!),responseText
是我想要的有效JSON,statusText
是{{1 }}。
我在SO上找到某个地方(现在似乎无法再找到它),问题是IE需要xml格式的响应,并在其他任何地方抛出解析器异常。
基本上,建议的解决方案是使用错误处理程序作为成功处理程序:
"parsererror"
这对我来说似乎很狡猾。有没有人知道其他任何解决方案?
附:我已经尝试过的事情:these,this,建议的所有解决方案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调用(因此 - 不调用上面的错误处理程序),则不会出现此错误。
答案 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,
"IsReports":true
}
}
我看到它说角色是15但你只显示4.你编辑了结果吗?
答案 1 :(得分:0)