如何在传递之前检查json结果?

时间:2011-01-20 18:31:33

标签: javascript jquery ajax json yql

我有这个函数从yql查询中检索json数据

    function link(b){
        var jsonURI = "http://query.yahooapis.com/v1/public/yql?q="+encodeURIComponent("select href,alt,content from html where url='"+b+"' and xpath='//a[@id=\"download\"] |//img[@class=\"dvLinkOverlayFill\"] |//meta[@name=\"title\"]'")+"&format=json&diagnostics=true&_maxage=86400&callback=callback&jsoncallback=?";
        jQuery.ajaxSetup({cache: true});
        jQuery.getJSON(jsonURI,callback);
    }

我想要的是在传递给回调之前检查数据是否为空,如果它为null,它再次运行link()函数,如果没有传递,我试过

            if (jQuery.query.results == null){link(b);}

但没有运气,任何建议或指导?

编辑:通过使用

让它工作,部分工作
if (o.query.results == null) { link(b); }

在回调函数

callback(o){
   if (o.query.results == null) { link(b); }

但是我不能将“b”从链接函数传递给回调函数,这是唯一可以使用的东西,比如可以在这里传递的回调(o,b)jQuery .getJSON(jsonURI,回调);  因为这个发送“o”,如何发送“b”以及?就像是 jQuery.getJSON(jsonURI,回调(O,B));

2 个答案:

答案 0 :(得分:1)

编辑更新了问题解答:

    function link(b){
    var jsonURI = "http://query.yahooapis.com/v1/public/yql?q="+encodeURIComponent("select href,alt,content from html where url='"+b+"' and xpath='//a[@id=\"download\"] |//img[@class=\"dvLinkOverlayFill\"] |//meta[@name=\"title\"]'")+"&format=json&diagnostics=true&_maxage=86400&callback=callback&jsoncallback=?";
    jQuery.ajaxSetup({cache: true});
    jQuery.getJSON(jsonURI,function(data, status, xhr){ 
                                            callback(data, status, xhr,b); 
                                    });
}

所以你在参数[3]

中得到了你的b对象

答案 1 :(得分:0)

难道你不能简化它吗?

if (!jQuery.query.results) { link(b); }