jqgrid post запрашивает данные json

#json #post #jqgrid

#json #Публикация #jqgrid

Вопрос:

Мое чтение данных сетки настроено на использование формата json. Это конфигурация

     url:"devitem.json",
    mtype: "POST",
    datatype: "json",

    ajaxGridOptions: {
      type    : 'post',
      async   : false,
      error   : function() { alert('Something bad happened. Stopping');},
    },

    jsonReader : {
      root        : "rows",
      page        : "page",
      total       : "total",
      records     : "records",
      repeatitems : true,
      cell        : "cell",
      id          : "0",
      userdata    : "userdata",
    },
  

Запрос на чтение от клиента всегда отправляет параметры в этом формате:

_search= falseamp;nd = 1317286048991amp;rows= 25amp;page = 1amp;sidx= device_idamp;sord= ascamp;totalrows = 100 Как я могу преобразовать его в формат json?

Я также установил параметр postData

 postData    : JSON.stringify({"dev_post_reqtype":"read","dev_post_devndx":"1","dev_post_reccount":"55"}),
  

Это работает, но obiuovsly не может быть изменено

У меня такая проблема с пейджером. Для тестирования после изменения номера страницы я вызываю эту функцию

     function DEVpager_event(pgevent) {

 var page = jQuery("#DEVtbl").getGridParam('page');
  alert (pgevent page) ;

// changed devndx for test only
var jdata = JSON.stringify({"dev_post_reqtype":"read","dev_post_devndx":"25","dev_post_reccount":"55"}) ;
  

jQuery(«#DEVtbl»).jqGrid(‘setGridParam’, ‘postData’, jdata);
} ;

страница изменяется с моим выбором, но postData не меняются спасибо за помощь

Ответ №1:

Если я правильно понимаю вашу проблему, вам следует использовать serializeGridData примерно в следующей форме:

 serializeGridData: function(postData) {
    return JSON.stringify(postData);
}
  

Если вам нужно отправить некоторые дополнительные данные на сервер, вы можете использовать дополнительно

 postData: {
    dev_post_reqtype: "read",
    dev_post_devndx: "1",
    dev_post_reccount: "55"
}
  

или

 postData: {
    dev_post_reqtype: "read",
    dev_post_devndx: 1,
    dev_post_reccount: 55
}
  

зависит от типа dev_post_devndx и dev_post_reccount свойств, которые вам нужны (строка или целое число).

Комментарии:

1. Спасибо! Кто-то должен пометить это как ответ. Это работает, как и ожидалось.

Ответ №2:

Документация jqGrid … наверное, худшее, что я когда-либо видел

Попробуйте с этим примером:

     $("#wlistt").jqGrid('navGrid','#pagerwlist',
        {  add: true, edit: true, del: true },
        {// settings for edit
                        afterShowForm:afterShowEdit, 
                        afterSubmit:processAddEdit,
                        beforeSubmit:validateData,
                        closeAfterAdd: true,
                        closeAfterEdit: true
                } 
                ,{// settings for add
                        afterShowForm:afterShowAdd, 
                        afterSubmit:processAddEdit,
                        beforeSubmit:validateData,
                        closeAfterAdd: true,
                        closeAfterEdit: true
                }
                ,{} // settings for delete
        );

    } 
}
function afterShowEdit(formId) {
            alert('show_edit');         
}
function afterShowAdd(formId) {

        alert('show_add');
}
function processAddEdit(formId) {

        alert('proc_add');
}
function validateData(formId) {

        alert('val_dat');
}