【问题标题】:YQL - how to sign request by custom IDYQL - 如何通过自定义 ID 签署请求
【发布时间】:2012-01-26 08:51:12
【问题描述】:

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

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

我将每个查询记录到简单的 ul-li 列表中,我在其中指示 ajax 请求的状态(ajax-loader、ok、error)。请求完成后,我想将合适的li-element的CSS class"loading"分别更改为"ok"/"err"

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

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?

【问题讨论】:

    标签: javascript jquery ajax asynchronous yql


    【解决方案1】:

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

    由于您使用的是 jQuery,因此您可以按照 jQuery 论坛中的描述进行操作:Uniquely identifying ajax requests / responses。基本上,他们在 XHR 请求中添加了一个唯一标识符,您可以在回调函数中读取该标识符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-11
      • 2014-10-24
      • 2021-06-03
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多