返回文本输入和显示YQL查询结果的未定义值

时间:2011-02-21 20:23:18

标签: javascript jquery json yql

我正在尝试显示YQL查询中的内容。但是,我在文本字段中输入的值在提交时返回值 undefined ,从而导致YQL查询失败。

除了这个问题之外,我不知道如何在我的代码的这一部分中为getJSON函数选择回调函数中数据参数的标题:

//Return the JSON results of the YQL query
$.getJSON(restQuery, function(data) {
    //Display the returned results in the searchResults div
    $("#searchResults").html(data);
});

以下是我的代码的JSFiddle:http://jsfiddle.net/JAS4H/30/

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我已经清理了一下你的代码。

$(function() {

    function search(term) {
        var query = 'SELECT title FROM search.web WHERE query="' + term + '"',
            url = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent(query) + '&format=json&diagnostics=true&callback=cbfunc';

        $.get(url, function(data) {
            $('#searchResults').html(data);
        });
    }

    $('#search').live('submit', function() {
        search($('#searchInput').val());
        return false;
    });

});

演示: http://jsfiddle.net/JAS4H/33/

正如您所看到的,响应数据不是JSON - 这就是为什么$ .getJSON()不起作用的原因。例如,如果您搜索" cars",您将收到此回复:

  

cbfunc({"查询" {"计数":10,"创建":" 2011-02-21T20:40:16Z&# 34;"郎":" EN-US""诊断":{" publiclyCallable":"真" " URL&#34 ;: {"执行时间":" 779""内容":" HTTP://老板。 yahooapis.com/ysearch/web/v1/cars?format=xml&start=0&count=10"},"user-time":"781",&# 34;服务时间":" 779""建立版本":" 11323"}"结果":{& #34;导致":[{"标题":"新   &安培;二手车销售,汽车经销商,   汽车评论和汽车   ..."},{"标题":"汽车   (动画)"},{"标题":" AutoTrader"},{"标题":"新   汽车,二手车,蓝皮书价值观和   汽车价格 - 凯利   ......"},{"标题":"汽车 -   维基百科,免费   百科全书"},{"标题":"汽车津贴   回扣系统(CARS)"},{" title":"使用   汽车 - 二手车价格,二手车   价值观和评测   ..."},{"标题":" Edmunds.com"},{"标题":"汽车   出售,二手车出售,新车   出售......"},{"标题":"研究新   汽车与汽车二手车:汽车价格,   规格..."}]}}});

这是JSONP我相信......