【发布时间】: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