YQL - как подписать запрос по пользовательскому идентификатору - PullRequest
0 голосов
/ 26 января 2012

У меня очень простое приложение jQuery, запрашивающее YQL с помощью

SELECT title, href FROM digg.search.search WHERE query="cats" LIMIT 5

Я записываю каждый запрос в простой список ul-li, где я указываю состояние запроса ajax (ajax-loader, хорошо,ошибка).После завершения запроса я хочу изменить CSS class соответствующего li-элемента с "loading" на "ok" / "err" соответственно.

Но чтобы определить правильный li-элемент, я должен как-то найтиэто по уникальному идентификатору.Я отмечаю li-элемент атрибутом data- перед вызовом AJAX следующим образом:

var rqid = uniqId();
$searchLogger.append('<li class="loading" data-rqid="'+ rqid +'"><a href="#">' + q + '</a></li>');
$.ajax({
    url     : 'http://query.yahooapis.com/v1/public/yql',
    type    : 'POST',
    dataType: 'json',
    data    : {
        callback : '',
        format   : 'json',
        env      : 'store://datatables.org/alltableswithkeys',
        q        : 'SELECT title, href FROM digg.search.search WHERE query="' + q + '" LIMIT 5'
    }

В случае успешного обратного вызова мне нужно сослаться на соответствующий элемент li.Я не могу повторно использовать переменную rqid, потому что она может быть переписана другим запросом, пока первый еще ожидает ответа.

success: function(data) {
    $searchLogger.find('[data-rqid="' + idOfThisRequest + '"]')
        .removeClass('loading')
        .removeClass('error')
        .addClass('ok');

    ... // other code
}

Есть ли какая-либо опция для запроса YQL, чтобы "подписать" запрос моим rqid, а получить этот идентификатор в обратном вызове?

1 Ответ

0 голосов
/ 27 января 2012

Я не верю, что в YQL есть какая-либо опция для добавления такого уникального идентификатора в запрос, который будет возвращен при обратном вызове.

Поскольку вы используете jQuery, вы можете сделать что-то, как описано здесь на форумах jQuery: Уникальная идентификация запросов / ответов ajax . В основном они добавляют к запросу XHR уникальный идентификатор, который вы можете прочитать в функции обратного вызова.

...