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

发布于 2024-10-12 22:22:12 字数 1038 浏览 3 评论 0原文

我有这个函数从 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,如果为 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,callback); 既然这个正在发送“o”,如何让它也发送“b”?类似的东西 jQuery.getJSON(jsonURI,回调(o,b));

i have this function to retrieve json data from yql query

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

What i want is to check if the data is null or not before passing on to the callback, if its null, it runs again the link() function, if not it passes on, i have tried

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

but no luck, any advice or guide?

EDIT: Got it working, part of it, by using

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

inside the callback function

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

However i can't pass the "b" from the link function to the callback function, it's the only thing that is left for this to work, something like callback(o,b) that could be passed on in here jQuery.getJSON(jsonURI,callback);
since this one is sending the "o", how to make it send the "b" aswell? something like
jQuery.getJSON(jsonURI,callback(o,b));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦毁影碎の 2024-10-19 22:22:12

编辑更新了问题答案:

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

所以你在参数中得到了 ur b 对象[3]

EDIT updated question answer:

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

So you got ur b object in arguments[3]

稀香 2024-10-19 22:22:12

你就不能简化一下吗?

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

Couldn't you just simplify that?

if (!jQuery.query.results) { link(b); }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文