2016-03-21 1 views
0

У меня есть jqgrid набор в jsFiddle:jqgrid не будет загружать JSon данные из удаленного URL

$("#list").jqGrid({ 
      height: 700, 
      width: 900, 
      datatype: 'json', 
      mtype:'GET', 
      url: url, 
      colNames:['Col 1','Col 2'], 
      colModel :[ 
       {name:'col1', index:'col1'}, 
       {name:'col2', index:'col2'}, 
      ], 
      pager: '#pager_list', 
      rowNum:20, 
      rowList:[20,50,100], 
      viewrecords: true, 
      caption: 'Test', 
      gridview : true,  
      }); 

http://jsfiddle.net/rw5hogz3/11

Однако, он не будет загружать данные в формате JSON с удаленного сервера. Json кажется прекрасным при загрузке в браузере.

Это действительно работает, когда я размещаю скрипт jqgrid и json на localhost. Кто-нибудь испытал что-то подобное раньше? Любая помощь очень ценится :)

+0

узнать о CORS – madalinivascu

+0

Youre получение заголовка No 'Access-Control-Allow-Origin' присутствует на запрошенном ресурсе. Это означает, что вам необходимо правильно настроить CORS на своем сервере. – KyleK

+0

изменить тип данных на jsonp. – madalinivascu

ответ

0

Вам необходимо включить CORS на свой сервер. Поместите на страницу, которая возвращается в JSON

<?php 
header("Access-Control-Allow-Origin: *"); 

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

Но просто Google CORS, чтобы узнать больше.

Кроме того, вы можете попробовать предложение madalins о jsonp datatype. Но в jqgrid это не так просто, как просто набирать «jsonp» в тип данных. Вы должны сделать это в ajaxGridOptions ...

$("#list").jqGrid({ 
      height: 700, 
      width: 900, 
      datatype: 'json', 
      ajaxGridOptions: { jsonp: true, contentType: 'application/json; charset=utf-8' }, 
      mtype:'GET', 
      // rest of your code 

Это, вероятно, не будет работать, хотя, как вы все равно, скорее всего, получить какую-то ошибку CORS

+0

Включение CORS. Очень ценю вашу помощь! –

+0

Прохладный, рад, что это сработало :) – KyleK

0

Try JSONP для Креста - запрашивающей

Использование

$("#list").jqGrid({ 
       height: 700, 
       width: 900, 
       datatype: 'json', 
       mtype:'GET', 
       url: "http://202.137.146.116/tokoweblink/weblink.php?q=1&agent=ABVT0010", 
       ajaxGridOptions: { jsonp: true, contentType: 'application/json; charset=utf-8' }, 
       colNames:['Inv No', 'Client', 'Amount'], 
       colModel:[ 
         {name:'id',index:'id', width:55}, 
         {name:'name',index:'name asc, invdate', width:100}, 
         {name:'amount',index:'amount', width:80, align:"right"} 
         ], 
       }); 

Assign column Название модели, индекс с ключом json key.