如何从JQuery getJSON读取数据
我正在努力使用getJSON。我有一个简单的StockWatcher应用程序,它以JSON格式返回数据如何从JQuery getJSON读取数据,jquery,json,Jquery,Json,我正在努力使用getJSON。我有一个简单的StockWatcher应用程序,它以JSON格式返回数据 http://localhost:8080/StockWatcherServer/stockwatcher/stockPrices?q=ABC+DEF+PQR 输出: ({ "stocks": [{ "symbol": "ABC", "price": 80.11611442288577, "change": 1.433241013155
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 complete)
我已经使用Firebug对此进行了调试,我可以看到我可以检索该对象,但我看到了一个XML错误
XML分析错误:语法错误位置:moz nullprincipal:{0daef08f-94bc-4bea-879f-6456e8175e38}行号1,第1列:
下面是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>
$(文档).ready(函数(){
var url='1〕http://localhost:8080/StockWatcherServer/stockwatcher/stockPrices?q=';
var查询;
$(“按钮”)。单击(函数(){
query=$(“#query”).val();
//发出请求后立即分配处理程序,
//记住这个请求的jqxhr对象
var jqxhr=$.getJSON(url、函数(数据){
var obj=$.parseJSON(数据);
$。每个(对象、功能(i、项目){
$(“#结果”).append('Title:'+item.symbol+'==Price:'+item.Price+'');
});
})
.success(函数(数据){alert(“第二次成功”);})
.error(函数(数据){alert(“error”);})
.complete(函数(数据){alert(“complete”);});
//在这里执行其他工作。。。
//为上述请求设置另一个完成功能
jqxhr.complete(函数(){alert(“second complete”);});
});
});
我尝试过调用parseJSON和不使用parseJSON的各种选项,
但它似乎不起作用。如果在原始JSON中使用“(“and”)”,请尝试以下方法:
{
"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
}
]
}
我想你正在寻找更像这样的东西。。。尝试:
$(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
$.ajax({
url : url,
type: "GET",
dataType: "json",
success: function(data) {
$.each(data.stocks,function(i,item){
$("#results").append('Title:'+item.symbol+' == Price:'+item.price+'</p>');
});
},
error: function(data) { alert("error"); },
});
// perform other work here ...
});
});
$(文档).ready(函数(){
var url='1〕http://localhost:8080/StockWatcherServer/stockwatcher/stockPrices?q=';
var查询;
$(“按钮”)。单击(函数(){
query=$(“#query”).val();
//发出请求后立即分配处理程序,
//记住这个请求的jqxhr对象
$.ajax({
url:url,
键入:“获取”,
数据类型:“json”,
成功:功能(数据){
美元(数据、库存、功能(i、项目){
$(“#结果”).append('Title:'+item.symbol+'==Price:'+item.Price+'');
});
},
错误:函数(数据){alert(“error”);},
});
//在这里执行其他工作。。。
});
});
它是否真的从服务器返回并带有()符号(如您的示例({“stocks”:[{…]}))?因为我将所有内容都粘贴到了括号内({“stocks”:[{…]})在联机工具中,它会正确地将其转换为对象,就像parseJSON一样。P.S.假设存在导致问题的括号,您就不需要parseJSON,因为getJSON()会解决这个问题。@johnmunch:我也这么想。()
导致此错误,请将其丢失。您的页面是否也在http://localhost:8080
?如果不需要,您需要JSONP而不是JSON。另外,$.getJSON
为您解析它,您不需要$.parseJSON
。我是想制作它的。ajax,然后我忙了起来。好吧,我按照你们的建议做了两件事。首先,我删除了在JSON数据中以“(“and ending”)”开头/其次,我将调用从.getJSON更改为.ajax,一个小的更改是我必须引用数据中的股票。$.each(data.stocks,function(I,item)……我的问题是:.getJSON的用途是什么,我以为它是围绕.ajax的包装器,它确实
$(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
$.ajax({
url : url,
type: "GET",
dataType: "json",
success: function(data) {
$.each(data.stocks,function(i,item){
$("#results").append('Title:'+item.symbol+' == Price:'+item.price+'</p>');
});
},
error: function(data) { alert("error"); },
});
// perform other work here ...
});
});