Вопрос по jquery – jqgrid addJSONData не работает

0

Я работаю над JQGrid, возвращение JSON

{"total":1,"page":1,"records":2,"rows":[{"projectId":"1022","name":"john"}]}

тогда в функции, которую я вызываю

 var jsongrid = eval("("+data+")");                  
 var thegrid = jQuery("#projectList")[0];                       
 thegrid.addJSONData(jsongrid);

но это дает мне ошибку: объект является нулевым или неопределенным. не знаю почему. Я не использовал JSON Reader.

Кстати, знаете ли вы, как использовать метод set для установки «итогов», «страницы», «записей»? ?

Ваш Ответ

1   ответ
2

addJSONData методbefore сетка будет создана с учетомjQuery("#projectList").jqGrid({...});

ИспользованиеaddJSONData практически всегда не требуется (см. один из моих первых сообщений на эту темуВот). Точно так же вы никогда не должны использоватьeval метод, который является злом. Один используетjQuery.parseJSON или жеJSON.parse вместо.

Я полагаю, что вы должны использоватьdatatype: 'json' чтобы решить вашу проблему. Вы должны опубликовать больше кода, чтобы показать вам, как вы должны использовать другие параметры jqGrid в вашем случае.

UPDATED: Из вашего предыдущего вопроса кажется, что вы хотите просто отправить дополнительные данные на сервер из формы при нажатии кнопки & quot; Поиск & quot; кнопка. В случае, если бы я предложил изменить код к следующему

var $grid = $("#projectList");

$grid.jqGrid({
    url: 'user595234.json',
    datatype: "json",
    serializeGridData: function (data) {
        return $.param(data) + '&' + $("#project_search_form").serialize();
    },
    jsonReader: {id: "projectId", repeatitems: false},
    colNames: ['ID', 'Name'],
    colModel: [
        {name: 'projectId', width: 255},
        {name: 'name', width: 255}
    ],
    rowNum: 10,
    rowList: [10,20,30],
    pager: '#projectPager',
    sortname: 'projectId',
    viewrecords: true,
    sortorder: "desc",
    caption: "Simple data manipulation",
    height: "auto"
}).jqGrid("navGrid", "#projectPager", {edit: false, add: false, del: false});

$("#search").click(function () {
    $grid.trigger("reloadGrid", [{page: 1}]);
});

Вдемо Я получаю только форму на примере использованияjQuery.serialize и немного изменить его. Он отображает данные, которые вам нужны

enter image description here

Кроме того, как вы можете легко проверить в отношении Fiddler или Firebug, URL будет дополнен дополнительными параметрами, как показано ниже

...?_search=false&nd=1336057299806&rows=10&page=1&sidx=projectId&sord=desc&a=1&b=2&c=3&d=4&e=7&f=8 

Стандартные параметры

_search=false&nd=1336057299806&rows=10&page=1&sidx=projectId&sord=desc

будет добавлено с параметрами из формы

a=1&b=2&c=3&d=4&e=7&f=8

В некоторых сценариях можно использоватьjQuery.serializeArray в качестве альтернативы. Это позволяет сериализовать данные в другом формате (например, JSON) или преобразовать данные в другой формат (см.Вот) которые можно легко объединить со стандартными параметрами jqGrid, используя$ .extend.

Error: User Rate Limit Exceededstackoverflow.com/questions/10393256/… user595234
Error: User Rate Limit Exceeded

Похожие вопросы