удалить дополнительные параметры запроса из jQGrid для веб-сервиса RESTFul - PullRequest
0 голосов
/ 28 марта 2012

Я использую JQGrid для получения даты из RESTFul web services, которую я создал на сервере

, теперь, когда я пытаюсь нажать на URL http://www.example.com/event/getAllInfo, jqGrid по умолчанию добавляет _search=false&nd=1332922405416&rows=20&page=1&sidx=&sord=asc костальной URL и из-за этого мой сервер не получает данные обратно, поэтому

1) как я могу удалить его
2) и поместить его обратно в URL с такимкак это выглядит http://www.example.com/event/getAllInfo/false/1332922405416/20/1/0/asc

Я могу создать URL на сервере, как указано выше, но как я могу сделать jQGrid, чтобы использовать его из RESTful, а не из строки запроса

здесьмой код

jQuery("#list4").jqGrid({
        url:"http://www.example.com/event/getAllInfo",
        datatype: "json",
        restful:  true,
        mtype: 'GET',
        height: 250,
        colNames:['id','title', 'description', 'create date','json','img','video'],
        colModel:[
            {name:'id',index:'e_info_id', width:60, sorttype:"int"},
            {name:'title',index:'e_meta_title', width:90, sorttype:"date"},
            {name:'name',index:'e_meta_description', width:100},
            {name:'amount',index:'e_info_create_date', width:80, },
            {name:'tax',index:'e_meta_JSON', width:80},     
            {name:'total',index:'e_meta_img', width:80},        
            {name:'note',index:'e_meta_video', width:150}       
        ],
        multiselect: true,
        caption: "Manipulating Array Data"
    });

1 Ответ

2 голосов
/ 28 марта 2012

Прежде всего, веб-сервисы RESTFul не означают, что вы не можете отправить дополнительные параметры на сервер. Основная идея - использовать URL только для идентификации ресурса и использовать разные HTTP-глаголы ( методы запроса ) для разных операций.

Только если вы не хотите или не можете осуществлять подкачку, сортировку и фильтрацию данных на стороне сервера, вы можете удалить любые дополнительные параметры из URL, который будет использоваться. Для этого вы можете просто добавить

postData: ""

в качестве дополнительного параметра. В этом случае вы должны использовать loadonce: true или, по крайней мере, rowNum: 10000 (или какое-либо другое большое значение). В этом случае будет очень важно использовать gridview: true в качестве дополнительного параметра (я рекомендую использовать параметр всегда). Сервер должен вернуть все данные. Данные должны быть отсортированы, если вы используете параметр sortname.

Я бы рекомендовал вам добавить Cache-Control: private, max-age=0 в заголовок ответа сервера (см. здесь и здесь ).

ОБНОВЛЕНО : Рекомендую прочитать ответ на вопрос, который вы задаете о кодировке URL. Как я уже писал вам ранее в комментарии, я думаю, что часть _search=false&rows=20&page=1&sidx=&sord=asc не принадлежит ресурсу. В основном это дополнительные параметры или свойства запроса. Вы можете поместить информацию в заголовок HTTP внутри обратного вызова loadBeforeSend (см. здесь пример), но я не думаю, что это будет хорошей идеей и упростит использование ОТЛИЧНЫЕ услуги, которые вы разрабатываете. Я бы порекомендовал вам просто удалить nd=1332922405416 в отношении опции prmNames: {nd: null} jqGrid и использовать Cache-Control для управления кэшированием или ответами.

...