Функция Add
устанавливает локальная переменная datas
, которые существуют только внутри функции Add
.Вероятно, вам нужно вернуть значение из функции и установить для переменной, существующей в области использования, вызов setGridParam
.
Следующая проблема состоит в том, что вам следует кодировать JSON.stringify(datas)
относительно encodeURIComponent
перед тем, как вставить его как часть URL.Вы также можете использовать функцию jQuery.param вместо:
url:'myni.php?' + $.param({path:'this/update', json:JSON.stringify(datas)})
Если вы используете HTTP GET (mtype:'GET'
) для запросов к серверу, я бы порекомендовал вам лучше использовать postData
параметр jqGrid, который содержит функции:
$("list").jqGrid({
url:'myni.php',
postData: {
path: 'this/update',
json: function() {
return JSON.stringify({
ID: "xyz",
operation: "Add",
fields: ["code", "desc", "type"],
values: [$('#code').val(), $('#desc').val(), $('#type').val()]
});
}
},
// other parameters
});
Свойства параметра postData
будут добавлены в URL ('?' и '&' будут вставлены при необходимости) в случае использования mtype:'GET'
или в тело опубликованных данных в случае mtype:'POST'
.
Преимущество использования функций внутри postData
заключается в том, что соответствующие значения (например, значение параметра json
) будет рассчитываться при каждом запросе ajax .Если пользователь изменяет порядок сортировки или выбирает другую страницу, на сервер будет отправлен запрос ajax.Таким образом, в случае, если необходимо определить свойства postData
и текущие значения из $('#code').val()
, $('#desc').val()
и $('#type').val()
будут вставлены в запрос.
Если значениеиз параметра path
не должно быть статическим, вы можете сделать это также как функцию.
В случае использования postData
, который включает функции, код которых вы можете уменьшить до $('#tblData1').setGridParam({datatype: Settings.ajaxDataType}).trigger('reloadGrid')
.
Подробнее об использовании функций внутри postData
вы можете прочитать здесь .