jqgrid устанавливает тип данных в jon - вместо этого получает xml - PullRequest
1 голос
/ 17 мая 2011

Я пытаюсь настроить jqgrid с данными JSON.
Моя проблема в том, что данные, возвращаемые из моего сервиса, представлены в формате xml.
Я отследил запрос, отправленный сеткой в ​​firebug, и вот что он говорит:

Request Headers
Host    localhost
User-Agent  Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept  application/json, text/javascript, */*; q=0.01
Accept-Language en-gb,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With    XMLHttpRequest
Referer http://localhost/sample/sampleUserSearchPage.htm
Content-Length  60
Cookie  ASP.NET_SessionId=yfx42t45b0nidn45yztqzsun

обратите внимание на поле Content-Type.
Я сравнил это с другим запросом jQuery.ajax, который я делал, и заметил, что единственное отличие было в поле Content-Type. по другому запросу (который возвратил json) тип содержимого был application/json; charset=UTF-8;
я думаю, что это проблема, но я не смог найти в документации jqgrid, как это изменить.
Прикреплен мой код JQuery:

$("#grid").jqGrid({
        url: 'SampleScriptService.asmx/GetGridData',
        datatype: "json",
        mtype: "POST",
        jsonReader : { root: "rows" },
        colNames: ['Username', 'Full Name', 'Monitor?', 'Schedule?', 'Reports?', 'Administrator?', 'Password'],
        colModel: [
            { name: 'username', key: true, index: 'id', jsonmap: 'Username' },
            { name: 'fullname', index: 'invdate', width: 90 , jsonmap: 'FullName' },
            { name: 'ismonitor', index: 'name', width: 100, jsonmap: 'IsMonitor' },
            { name: 'isschedule', index: 'amount', width: 80, jsonmap: 'IsSchedule' },
            { name: 'isreports', index: 'tax', width: 80, jsonmap: 'IsReports' },
            { name: 'isadministrator', index: 'total', width: 80, jsonmap: 'IsAdministrator' },
            { name: 'password', index: 'note', width: 150, jsonmap: 'Password' }
             ],
        rowNum: 10,
        viewrecords: true,
        caption: "Simple data manipulation",
    });

и метод веб-службы:

[WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public GridData GetGridData(int page, int rows, /*string sixd,*/ string sord)
        {
            var arr= new UsersController().SearchUsers("", 10, 0).ToArray(); //this returns an array of User objects.
            GridData retVal = new GridData() { page = 1, records = 6, total = 34, rows = arr };

            return retVal;
        } 

1 Ответ

1 голос
/ 17 мая 2011

Вероятно, основная проблема, с которой вы столкнулись: вам следует добавить дополнительные параметры в jqGrid:

ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
serializeGridData: function (postData) {return JSON.stringify(postData);}

Тогда для запроса из jqGrid потребуются данные JSON. Например, вы можете скачать старый демонстрационный проект или прочитать дополнительную информацию здесь .

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