2013-02-15 5 views
0

Я очень новичок в JQuery и поэтому нуждаюсь в вашей помощи в этом отношении.jqgrid json URL не работает

Я пытаюсь использовать jqGrid с URL-адресом JSON, но не могу его использовать. На странице htm не отображаются данные.

$(function() { 
    "use strict"; 
    $('#list').jqGrid({ 
     datatype: 'json', 
     url: 'json_url', 
     caption: 'Prospect Finder', 
     gridview: true, 
     height: "auto", 
     colNames: ['Partner','First Name', 'Last Name', 'Organization'], 
     colModel: [ 
      {name: 'PARTNER', jsonmap: 'PARTNER' }, 
      {name: 'NAME_FIRST',jsonmap: 'NAME_FIRST' }, 
      {name: 'NAME_LAST', jsonmap: 'NAME_LAST' }, 
      {name: 'NAME_ORG1', jsonmap: 'NAME_ORG1' } 
     ], 
     jsonReader: { 
      repeatitems: false, 
      id: "PARTNER", 
      root: function (obj) { 
       return obj; 
      } 
     } 
    }); 
}); 

И это мои JSON данные

{"itab":[ { "PARTNER":"0061000220", "NAME_FIRST":"", "NAME_LAST":"", "NAME_ORG1":"GTA Central" }, { "PARTNER":"0061000221", "NAME_FIRST":"", "NAME_LAST":"", "NAME_ORG1":"GTA West" }, { "PARTNER":"0061000222", "NAME_FIRST":"", "NAME_LAST":"", "NAME_ORG1":"GTA East" }, { "PARTNER":"0041000141", "NAME_FIRST":"", "NAME_LAST":"", "NAME_ORG1":"Office Systems" } ]} 

Может кто-нибудь плз мне помочь?

Thanks, DJ

+0

у вас есть дополнительные запятая здесь '' NAME_ORG1 '}, '<- –

+0

Как вы предоставляете json-данные вашему jqgrid? Не уверен, но я думаю, что виновник жесткого кодирования «url: json_url» является виновником? – gaurav

+0

@wirey: Я удалил дополнительную запятую, но проблема все еще сохраняется. – user1596433

ответ

1

Вам нужно просто исправить root свойство jsonReader до root: "itab". Кроме того, важно включить rowNum с достаточно большим значением (например, rowNum: 10000). Если вы этого не сделаете и не используете pager, тогда jqGrid будет отображать только первые 20 строк ответа сервера (значение по умолчанию rowNum равно 20) и отбрасывать все остальные строки.

The demo читать данные в формате JSON успешно и отображает

enter image description here

Он использует следующий код

$(function() { 
    "use strict"; 
    $('#list').jqGrid({ 
     datatype: 'json', 
     url: 'user1596433.json', 
     caption: 'Prospect Finder', 
     gridview: true, 
     height: "auto", 
     colNames: ['Partner','First Name', 'Last Name', 'Organization'], 
     colModel: [ 
      {name: 'PARTNER', width: 80 }, 
      {name: 'NAME_FIRST' }, 
      {name: 'NAME_LAST' }, 
      {name: 'NAME_ORG1', width: 100 } 
     ], 
     jsonReader: { 
      repeatitems: false, 
      id: "PARTNER", 
      root: "itab" 
     }, 
     rowNum: 10000, 
     autoencode: true, 
     loadonce: true 
    }); 
}); 
0

Посмотрите на документы. http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data Ваш json настроен неправильно. См

{ 
     "total": "xxx", 
     "page": "yyy", 
     "records": "zzz", 
     "rows" : [ 
     {"id" :"1", "cell" :["cell11", "cell12", "cell13"]}, 
     {"id" :"2", "cell":["cell21", "cell22", "cell23"]}, 
      ... 
     ] 
    } 

Это формат по умолчанию (хотя вы можете изменить его, но вам все равно необходимо предоставить удостоверение личности, тотальную, страницы и записи)

jsonReader: { 
    repeatitems: false, 
    id: "Id", 
    root: function (obj) { return obj.itab; }, 
    page: function (obj) { return 1; }, 
    total: function (obj) { return 1; }, 
    records: function (obj) { return obj.itab.length; } 
} 
0

Мой опыт:

Таблица застрял на нагрузке, что означает его пытается извлечь из url, но не может обработать его.

Я тогда понял, что моя JSON несовместима с по умолчанию jsonReader, решение либо

1.Задайте jsonReader быть совместимы с вашими данными JSon

пример JSON данные:

{"page":1,"YOUR_ROW_NAME":[{"YOUR_ID":"14","YOUR_CELL_NAME":["ImageHeight"]}]} 

добавьте следующее в javascript (другие клавиши (например, страница), также можно переопределить)

jsonReader : { 
     root: "YOUR_ROW_NAME", 
     cell: "YOUR_CELL_NAME", 
     id: "YOUR_ID", 
}, 

2.carefully использование по умолчанию jsonReader, необходимо использовать "строку", 'ID', 'клетку' в квадратных скобках [] при кодировании данных

foreach($all as $row){ 
    $response->rows[$i]['id']=$row->id; 
    $response->rows[$i]['cell']=array($row->id,$row->name,$row->url); 
    $i++; 
} 

полезно вики для начинающих: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data

Смежные вопросы