2013-03-20 6 views
2

Я пытаюсь прочитать и опубликовать в jqGrid набор данных о землетрясениях GeoJSON, извлеченных из репозитория USGS. Запрос принимается, но отображает «Uncaught SyntaxError: Неожиданный токен», когда возможно встречает метаданные заголовка.jqGrid from USGS geojson data

$(function() { 
    'use strict'; 
    $.extend($.jgrid.search, {multipleSearch: true, multipleGroup: true, overlay: 0}); 
    $('#grid').jqGrid({ 
     url: 'http://earthquake.usgs.gov/earthquakes/feed/geojson/2.5/week?callback=?', 
     datatype: 'json', 
     colModel: [ 
      {name: 'mag', label: 'MAGNITUDO', width: 150, jsonmap: 'properties.mag', sorttype: 'number', 
formatter: 'number', formatoptions: {decimalPlaces: 2}}, 
      {name: 'place', label: 'LOCALITA', width: 150, jsonmap: 'properties.place'}, 
      {name: 'url', label: 'URL', width: 150, jsonmap: 'properties.url'} 
     ], 
     toppager: true, 
     gridview: true, 
     rowList: [10, 20, 50, 10000], 
     rowNum: 10, 
     jsonReader: { 
      root: 'features', 
      repeatitems: false 
     }, 
     loadonce: true, 
     ignoreCase: true, 
     height: 'auto' 
    }).jqGrid('navGrid', '#grid_toppager', {add: false, edit: false, del: false}) 
     .jqGrid('filterToolbar', {stringResult: true, defaultSearch: 'cn', searchOnEnter: false}); 
    $("#grid_toppager option[value=10000]").text('All'); 
}); 

У вас есть решение? Спасибо заранее.

+0

Вы протестировали, что JSON действительно? – Mark

+0

Хотя GeoJSON - это геопространственные данные, указывающий, что корень находится в «функции». Я не думаю, что есть проблема. может, я ошибаюсь? – user2190221

ответ

2

Я посмотрел в документации geojson, и я думаю, что нашел причину проблемы. Кажется, что GeoJSON (P) использует eqfeed_callback как имя обратного вызова (см. here). Таким образом, я исправил некоторые варианты jqGrid, которые вы использовали для следующего:

url: 'http://earthquake.usgs.gov/earthquakes/feed/geojsonp/2.5/week', 
datatype: 'jsonp', 
postData: '', 
ajaxGridOptions: { jsonp: false, jsonpCallback: 'eqfeed_callback', cache: true}, 

The modified demo работает сейчас, и отображать результаты как ниже

enter image description here

UPDATE:The modified demo использует новые URL-адрес из GeoJSON и новая версия (4.14.1) от free jqGrid.

+0

Отличный Олег, теперь я лучше понял функциональность в jquery из callback ?. Спасибо – user2190221

+0

@ user2190221: Добро пожаловать! Если проблема решена, вы должны ["принять"] (http://meta.stackexchange.com/a/5235/147495) ответ. Кстати [здесь] (http://stackoverflow.com/a/9588051/315935) и [здесь] (http://stackoverflow.com/a/4326986/315935) вы можете найти другие примеры использования JSONP в jqGrid , – Oleg