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);
когда я требую, чтобы данные были обновлены. Например, пропуск типа данных приведет к сбою обновления.