当我在IE8版本8.0.7600及更低版本中进行ajax请求时,我会收到“Invalid JSON Primitive: undefined”的错误提示,但在8.0.7601或更高版本中无法复制该错误。 有人知道为什么或如何修复它吗?
$.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
defaults.data
到底是字符串还是对象还不太清楚。如果是对象,尝试将其转换为字符串,因为你正在使用 Knockout.js,可以使用ko.utils.stringifyJson
方法。只是一个尝试,我不确定是否有效。我曾经遇到过类似的问题。 - Suave Ntidefaults.url + (defaults.url.indexOf('?') > 0 ? '&' : '?') + 'r=' + Math.random()
。如果你不想要缓存,只需使用cache:false
。 - Anders