2

我在 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 列:

({"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 的选项,但似乎它不起作用。

4

2 回答 2

1

我认为您正在寻找更像这样的东西...尝试:

$(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 ...
    });
});
于 2012-05-22T20:18:09.200 回答
0

如果您在原始 JSON 中使用“(”和“)”,请尝试以下操作:

{
    "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
        }
    ]
}
于 2012-05-22T20:02:14.233 回答