如何在jQuery $.get/ajax请求中获取请求的URL

35

我有以下代码:

$.get('http://www.example.org', {a:1,b:2,c:3}, function(xml) {}, 'xml');
有没有办法在请求发出后(在回调函数或其他情况下)获取用于发出请求的 URL?
我想要的输出是:
http://www.example.org?a=1&b=2&c=3

当您调用get()方法时,需要传递url和参数。那么为什么不在回调函数中构建完整的url字符串呢? - Vikas
2个回答

58

我无法在$.get()上使其生效,因为它没有complete事件。

我建议使用如下的$.ajax()方法:

$.ajax({
    url: 'http://www.example.org',
    data: {'a':1,'b':2,'c':3},
    dataType: 'xml',
    complete : function(){
        alert(this.url)
    },
    success: function(xml){
    }
});

疯狂演示


3
聪明!我很惊讶success回调中this.url不可用。 - Christopher
在angularjs中有没有相同的方法可以做到这一点? - Jahongir Rahmonov
我不确定... 我不熟悉 AngularJS... 你应该提出一个单独的问题... - Reigel Gallarde
1
@BennyNeugebauer 答案不是使用相应的 jqXHR.success()jqXHR.complete() 方法。ajax 的 回调选项 successcomplete 没有 被弃用。 - Nick Johnson
@BennyNeugebauer是错误的。截至jQuery版本3.4.1,jQuerysuccesscomplete回调函数并未被弃用。 - Marcus Parsons

4

既然jQuery.get只是jQuery.ajax的一种简写方式,另一种方法是使用后者的context选项,如文档所述:

在所有回调函数中,this引用传递给$.ajax的上下文选项中的对象;如果未指定上下文,则此引用指向Ajax设置本身。

因此,您将使用以下代码:

$.ajax('http://www.example.org', {
  dataType: 'xml',
  data: {'a':1,'b':2,'c':3},
  context: {
    url: 'http://www.example.org'
  }
}).done(function(xml) {alert(this.url});


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接