1

我正在使用 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。

4

3 回答 3

1

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

.done(function(msg) { 
    var url = this.url; 
});
于 2013-04-29T12:35:05.530 回答
1

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

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)
        }
}
于 2013-04-29T12:51:11.030 回答
1

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

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

于 2013-04-29T12:57:16.650 回答