$("#liveRTMessages").jqGrid({
url: $RT.ENDPOINT,
datatype: "json",
postData: { 'system': null },
mtype: "POST",
height: "100%",
colNames: $RT.colNames,
colModel: $RT.MessageModel,
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
gridview: true,
loadBeforeSend: function (xhr) {
// for testing only
$.ajax({
type: "POST",
url: $RT.ENDPOINT,
data: {},
datatype: "json",
contentType: 'application/json; charset=utf8',
success: function (data) {
var t = data;
}
});
},
serializeGridData: function (postData) {
if (postData.searchField === undefined) postData.searchField = null;
if (postData.searchString === undefined) postData.searchString = null;
if (postData.searchOper === undefined) postData.searchOper = null;
//if (postData.filters === undefined) postData.filters = null;
return JSON.stringify(postData);
},
jsonReader: {
repeatitems: false,
root: function (obj) { return obj.d.rows; },
page: function (obj) { return obj.d.page; },
total: function (obj) { return obj.d.total; },
records: function (obj) { return obj.d.records; }
},
loadComplete: function (data) {
// future event handling, very last grid event thrown
},
loadError: function (xhr, status, error) {
return;
}
});
我让jqGrid正常处理GET请求。但是POST失败了,因为我无法在http请求中设置contentType。 IIS期望'application / json'作为请求的contentType。使用$ .ajax可以正常工作。
更有趣的是loadBeforeSend(上面)能够添加contentType请求标头。
在这种情况下,当jqGrid发出HTTP请求时,我希望能够将application / json添加为contentType。
真的希望有一些我忽略的东西。
答案 0 :(得分:0)
我有用于跨域请求的jQuery.XDomainRequest库,我必须将其删除才能使其正常工作。 jqGrid使用contentType请求标头。