Как проверить результаты JSON перед передачей? - PullRequest
0 голосов
/ 20 января 2011

У меня есть эта функция для извлечения данных json из запроса yql

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

Что мне нужно, это проверить, являются ли данные нулевыми или нет перед передачей в обратный вызов, если он нулевой, он снова запускает функцию 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» из функции link в функцию callback, это единственное, что осталось для этого, что-то вроде callback (o, b), который можно передать здесь jQuery .getJSON (jsonURI, обратный вызов); так как этот отправляет «о», как заставить его отправить «б», а? что-то вроде jQuery.getJSON (jsonURI, обратный вызов (о, б));

Ответы [ 2 ]

1 голос
/ 20 января 2011

РЕДАКТИРОВАТЬ обновленный ответ на вопрос:

    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 голосов
/ 20 января 2011

Не могли бы вы просто упростить это?

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