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 支持

Twitter Bootstrap 响应式布局在 IE8 或更低版本中不起作用

使用 vanilla JS 删除 ES5 及更低版本数组中重复数字的最快方法是啥?