我有这个函数从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));
答案 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); }