jqGrid contentType标头未设置

时间:2014-01-21 18:38:09

标签: jquery ajax json iis jqgrid

   $("#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。

真的希望有一些我忽略的东西。

1 个答案:

答案 0 :(得分:0)

我有用于跨域请求的jQuery.XDomainRequest库,我必须将其删除才能使其正常工作。 jqGrid使用contentType请求标头。