как добавить данные json на сервер и отобразить их в jqgrid сразу после нажатия кнопки - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть работающая программа, которая отображает мои данные с сервера в jqgrid. сейчас я хочу сохранить данные на сервере. вот мой код:

function Add(){
   var datas = {
   "ID": "xyz",
   "operation": "Add",
   "fields": ["code", "desc", "type"],
   "values": [$('#code').val(), $('#desc').val(), $('#type').val() ]
}

$('#tblData1').setGridParam({
    url:'myni.php?path=' + encodeURI('this/update') + '&json=' +(JSON.stringify(datas)), 
    datatype: Settings.ajaxDataType,  
});
    $('#tblData1').trigger('reloadGrid'); 
}

этот код возвращает сообщение об ошибке «Ошибка исключения: ошибка сервера: параметр« операция »не указан». Я уже назначил операцию, и я не знаю, что пошло не так. Может кто-нибудь помочь мне исправить это? пожалуйста. * * 1004

Я хочу знать, как добавить данные на сервер после нажатия кнопки и сразу же отобразить их в jqgrid. Пожалуйста ...

1 Ответ

1 голос
/ 06 апреля 2011

Функция 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 вы можете прочитать здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...