jqgrid-postData отправляет предыдущие параметры и данные запроса

я использую postData для динамического задания параметров запроса. По щелчку какой-то внешней кнопки я меняю URL сетки, а также устанавливаю некоторые дополнительные параметры в postData, как показано ниже. JqGrid, похоже, добавляет все эти параметры, и это данные для всех последующих запросов. Есть ли способ контролировать или избегать отправки этих параметров каждый раз?

мое определение сетки:

jQuery(function() {
    $('#grid').jqGrid({
    url: 'rates.html',
    postData: {
        name: function() { return $("#name").val(); },
        rate: function() { return $("#rate").val(); },
                .....
        }
        ....
    });
});

вот в почтовом запросе: я вижу, что name, rate params идут наряду с другими стандартными параметрами jqGrid как sortname, sidx, rows, etc...

теперь, если по щелчку внешней кнопки, если я изменю URL сетки, как показано ниже

$('#changeReqBtn').click(function() {
       $('#grid').setGridParam({ url: 'changeReq.html', 
                              postData: { msgIds: msgIds } });
       $('#grid').trigger("reloadGrid");     

});

теперь jqGrid передает name, скорость msgIds params

теперь, если я изменю URL обратно на ставки.html скажем, например, при щелчке значка обновления jqGrid отправляет предыдущий msgIds param, а также предыдущие значения. Я не хочу отправлять предыдущий запрос params в новый запрос при изменении URL-адреса. Есть ли способ достичь этого?

3 ответов


если я правильно понял вашу проблему, вы должны избегать использования setGridParam и вместо этого сделайте следующее. Вы можете использовать $('#grid').jqGrid("getGridParam", "postData") и ссылка внутренний параметр postData. Например,

var myPostData = $('#grid').jqGrid("getGridParam", "postData");

так что вы можете использовать delete myPostData.msgIds удалить любое свойство метода, ранее добавленного setGridParam.


У меня была такая же проблема сохранения параметров postdata из предыдущих запросов.

я исправил это, сначала очистив postData, а затем установив postData с новыми параметрами.

очистка postData = > $('#grid1').setGridParam({ postData: ""});

настройка postData с новыми параметрами =>

var formValues = {searchVal: "abc", страна: "US"} $('#значение grid1').setGridParam ({ postData: formValues});


я смог решить это таким образом:

function triggerRefresh(wsParams) {
    // determine ws path
    var myGrid=$('#myjsTreeView');
    var urlData = "/myWebService.asmx/myWebServiceMethod";
    // note: you need to pass url, datatype, postdata
    var gridParam = { url: urlData, datatype: "json", postData: wsParams, page: 1 };                        
    myGrid.jqGrid('setGridParam', gridParam).trigger("reloadGrid");
} // function

разница в том, что я указать datatype на url и page в целом в моей просьбе - что заставило его работать!

я называю эту функцию вот так:

var myparams = $.toJSON({ para1: someValue, para2: someOtherValue });
triggerRefresh(myparams);

когда я требую, чтобы данные были обновлены. Например, пропуск типа данных приведет к сбою обновления.