在ajax完成回调中请求信息

时间:2013-04-29 12:32:40

标签: jquery ajax

我正在使用Ajax请求从我的服务器获取数据。我得到的数据来自几个地方(网址)。我需要一种方法来区分来自一个URL的数据和来自另一个URL的数据。 请求是这样的:

function initRequest(url)
    var request = $.ajax({
            url: url,
            contentType: 'application/json',
            dataType: 'json',
            type: "GET"
        });

        request.done(function(msg) {
            //i need to know what was the url of this request
            //request.url is undefined 
        }
}

我该怎么做? 我提到我不能使用数据本身(msg)来了解源URL。

3 个答案:

答案 0 :(得分:1)

由于您无法修改返回的JSON,请在回调中使用ajax对象的url:

.done(function(msg) { 
    var url = this.url; 
});

答案 1 :(得分:1)

您可以在完成回调中使用变量url,因为它是一个闭包变量

function initRequest(url)
    var request = $.ajax({
            url: url,
            contentType: 'application/json',
            dataType: 'json',
            type: "GET"
        });

        request.done(function(msg, status, xhr) {
            //you can use url here because it is a closure function
            alert(url)
        }
}

答案 2 :(得分:1)

如果.done函数位于initRequest的词法范围内,则只需直接访问url参数 - 它仍在范围内。

否则,只要您在context来电中未提供备用$.ajax设置,您就可以在this.url回调中访问.done - default jQuery使用AJAX对象(恰好包含此属性)调用所有AJAX回调作为上下文。