IE8 8.0.7600 及更低版本中的无效 JSON Primitive
Posted
技术标签:
【中文标题】IE8 8.0.7600 及更低版本中的无效 JSON Primitive【英文标题】:Invalid JSON Primitive in IE8 version 8.0.7600 and lower 【发布时间】:2012-07-13 15:17:41 【问题描述】:在 IE8 版本 8.0.7600 及更低版本中发出 ajax 请求但无法在 8.0.7601 或更高版本中复制时,我收到错误或“无效的 JSON Promitive:未定义”。有谁知道为什么或如何解决它?
$.ajax(
url: defaults.url + (defaults.url.indexOf('?') > 0 ? '&' : '?') + 'r=' + Math.random(),
type: defaults.method,
contentType: 'application/json',
dataType: defaults.dataType,
data: ko.toJSON(defaults.data),
beforeSend: function (xhr, settings)
xhr.setRequestHeader("URL_REFERRER", config.urlReferrer);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
,
)
控制器
public virtual JsonResult CompleteOrder(string id)
_entitlementsService.CompleteOrder(AuthenticateManager.CurrentUserProfile.UserModel.UserId, id);
return Json(new SuccessResponse("Order completed"));
请求
Request URL:http://localhost:16253/DashboardSetup/Entitlements/CompleteOrder/c8e053d9-a458-11e1-8dd0-001cc4565d26?r=0.8639180345926434
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:0
Content-Type:application/json
Cookie:MYNGCONNECT=56053B332B26A0FD9D0A31C5FC83868281D876DB1F365034306F6CB3A64C5B2F7
Host:localhost:16253
Origin:http://localhost:16253
Referer:http://localhost:16253/DashboardSetup/Entitlements/Entitlement?SearchResults=True&id=c8e053d9-a458-11e1-8dd0-001cc4565d26
URL_REFERRER:http://localhost:16253/DashboardSetup/Entitlements
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (Khtml, like Gecko) Chrome/20.0.1132.57 Safari/536.11
X-Requested-With:XMLHttpRequest
Query String Parametersview URL encoded
r:0.8639180345926434
【问题讨论】:
你的data
是在你的 ajax 帖子中还是其他?
我正在发送数据,但我一直在复制它,因为我没有那个版本的 IE8。
你能发布你的那部分代码吗?我的意思是data
目前还不清楚您的defaults.data
.. 是字符串还是对象。如果是对象,请尝试在使用 Knockout.js 时对对象进行字符串化 ..您可以使用 ko.utils.stringifyJson
..只是一个尝试...我不确定..我曾经面临过类似的问题。
问题是我什至无法复制它,因为我没有那个版本的 IE8。它在淘汰赛网站上明确指出“ko.toJSON——这会产生一个 JSON 字符串代表你的视图模型的数据。”。 defaults.data 是一个 JSON 对象。
【参考方案1】:
将您的 contentType 更改为“text/json”或“text/plain”。旧版 IE 在 header 中需要不同的内容类型配置。
【讨论】:
以上是关于IE8 8.0.7600 及更低版本中的无效 JSON Primitive的主要内容,如果未能解决你的问题,请参考以下文章
“iframe.contentDocument”在 IE8 和 FF(3.5 及更低版本)中不起作用还有其他解决此问题的步骤吗?
scss 使用Breakpoint +指南针/支持处理IE8及更低版本
scss 使用Breakpoint +指南针/支持处理IE8及更低版本
Internet Explorer 8 及更低版本的 SVG 支持