javascript
  • jquery
  • ajax
  • json
  • yql
  • 2011-01-20 30 views 0 likes 
    0

    我有這個功能來檢索YQL查詢JSON數據如何在傳遞之前檢查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,則再次運行該鏈接( )功能,如果不是傳中,我曾嘗試

      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,callback(o,b));

    +0

    你是不是想打電話之前檢查從YQL JSON響應的結果你link()函數獲取YQL響應? – Lance 2011-01-20 18:37:58

    +0

    不,我想檢查結果後的迴應,如果沒有結果(null),然後再試一次函數,直到有結果(鏈接(b)) – MikeJ 2011-01-20 18:50:55

    回答

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

    所以你得到的參數烏爾B對象[3]

    0

    難道你不能簡化嗎?

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

    我試過,但它說,jQuery.query .results is undefined – MikeJ 2011-01-20 18:46:47

    相關問題