YQL-如何通过自定义ID对请求进行签名

YQL - how to sign request by custom ID

本文关键字:请求 何通过 自定义 ID YQL-      更新时间:2023-09-26

我有一个非常简单的jQuery应用程序,用查询YQL

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

我将每个查询记录到简单的ul-li列表中,在其中指示ajax请求的状态(ajax加载程序,好,错误)。请求完成后,我想将适当li元素的CSS class分别从"loading"更改为"ok"/"err"

但要识别正确的li元素,我必须通过一些唯一的ID找到它。在AJAX调用之前,我用data-属性标记li元素,如下所示:

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对请求进行"签名"以及在回调中获取该ID有任何选项吗?

我认为YQL中没有任何选项可以向回调中返回的查询添加这样一个唯一的ID。

既然您使用的是jQuery,那么您可能可以按照jQuery论坛中的描述来做一些事情:唯一地识别ajax请求/响应。基本上,他们向XHR请求添加了一个唯一的标识符,您可以在回调函数中读取该标识符。