使用jQuery和ajax进行流控制:确定哪个响应属于哪个调用

时间:2011-12-14 07:29:28

标签: jquery ajax flow-control

我想确定哪个响应属于哪个(异步)调用。在我的客户端Web应用程序中,我有一个项目列表。每次用户导航到某个项目时,该应用程序都会进行ajax调用以检查该项目是否是最新的。如果用户导航非常快,则有几个呼叫(具有相同的回调函数)等待响应。有没有办法在jQuery中识别哪个响应属于哪个调用?或者我必须自己实施吗?

2 个答案:

答案 0 :(得分:0)

在调用$ .ajax时,指定callback方法和callbackData。将itemId指定为callbackData。执行回调时,您将获得itemId,以便您可以使用此ItemId更新与该特定项目相关的数据

答案 1 :(得分:0)

所以我刚刚找到一个似乎可以解决我的问题的插件:

http://docs.jquery.com/AjaxQueue(但今天没有下载链接)

我找到了这种方法来识别哪个响应属于哪个呼叫:

        var xhr = $.ajax({
            type: 'GET',
            url: 'service.php',
            dataType: 'json',                
            data: data,
            async: true,
            timeout: 1000,
            success: function(xhr)
            {
                alert('success with callID: ' + xhr.callID);
            },
            error: function(xhr)
            {
                alert('error with callID: ' + xhr.callID);
            },
            complete: function(xhr)
            {
                alert('completed callID: ' + xhr.callID);
            }
        });
        xhr.callID = ++seqNo;
        xhr.itemID = ID;

有了这些信息,就可以建立我自己的队列。