Я борюсь с getJSON. У меня есть простое приложение StockWatcher, который возвращает данные в формате JSONКак читать данные из JQuery getJSON
http://localhost:8080/StockWatcherServer/stockwatcher/stockPrices?q=ABC+DEF+PQR
Выход:
({
"stocks": [{
"symbol": "ABC",
"price": 80.11611442288577,
"change": 1.4332410131550721
}, {
"symbol": "DEF",
"price": 89.47611015580729,
"change": -1.469336678470048
}, {
"symbol": "PQR",
"price": 99.60017237722221,
"change": -1.3303545392913447
}]
})
Когда я использую простую функцию Javascript, чтобы прочитать это, я получаю ошибку (.error, .complete и .second полный)
Я использовал Firebug для отладки это, и я могу видеть, что я могу получить объект, но я вижу ошибку XML
XML Parsing Error: syntax error Location: moz-nullprincipal:{0daef08f-94bc-4bea-879f-6456e8175e38} Line Number 1, Column 1:
({"stocks": [^
Это Javascript.
<script type="text/javascript">
$(document).ready(function(){
var url='http://localhost:8080/StockWatcherServer/stockwatcher/stockPrices?q=';
var query;
$('button').click(function(){
query=$("#query").val();
// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.getJSON(url, function(data) {
var obj = $.parseJSON(data);
$.each(obj,function(i,item){
$("#results").append('Title:'+item.symbol+' == Price:'+item.price+'</p>');
});
})
.success(function(data) { alert("second success"); })
.error(function(data) { alert("error"); })
.complete(function(data) { alert("complete"); });
// perform other work here ...
// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });
});
});
</script>
Я экспериментировал с различными вариантами вызова parseJSON и без parseJSON, , но кажется, что это не работает.
Действительно ли он возвращается с сервера с помощью() вокруг него (как в вашем примере ({«акции»: [{...]}))? Потому что я вложил все в круглые скобки ({«акции»: [{...]}) в онлайн-инструмент http://json.parser.online.fr/, и он правильно перевел его в объект, точно так же, как parseJSON , Постскриптум предполагая, что там есть скобки, вызывающие проблему, вам не понадобится parseJSON, потому что getJSON() позаботится об этом. –
@JohnMunsch: Я думал то же самое. '()' Вызывают эту ошибку, теряют их. –
Ваша страница также работает на 'http: // localhost: 8080'? Если нет, вам нужен JSONP вместо JSON. Кроме того, '$ .getJSON' анализирует его для вас, вам не нужно' $ .parseJSON'. –