如何从JQuery getJSON读取数据

如何从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

我正在努力使用getJSON。我有一个简单的StockWatcher应用程序,它以JSON格式返回数据

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 ...
    });
});