【问题标题】:How to get request url in a jQuery $.get/ajax request如何在 jQuery $.get/ajax 请求中获取请求 url
【发布时间】:2010-09-30 05:53:25
【问题描述】:

我有以下代码:

$.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构建一个字符串呢?

标签: javascript jquery


【解决方案1】:

我无法让它在 $.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){
    }
});

craz demo

【讨论】:

  • 太聪明了!我很惊讶 this.url 在成功回调中不可用
  • 有没有办法在 angularjs 中做同样的事情?
  • 我不确定..我不熟悉 angularjs...你应该单独提出一个问题...
  • @BennyNeugebauer 答案是没有使用相应的jqXHR.success()jqXHR.complete() 方法。 ajax 回调选项 successcomplete弃用。
  • @BennyNeugebauer 不正确。 jQuery successcomplete 回调从 jQuery 版本 3.4.1 开始不被弃用。
【解决方案2】:

由于 jQuery.get 只是 jQuery.ajax 的简写,另一种方法是使用后者的 context 选项,如 documentation 中所述:

所有回调中的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});

【讨论】:

  • 谢谢。我的 url 帮助调试了 Rails 中的表单提交错误。使用 MyResource 控制器 localhost:3000/my_resource/new 的“新”操作路径创建了一个新资源。一个链接向自定义 Rails 控制器操作“change_partial”发出 AJAX 请求。在 AJAX 选项中,我使用了type: 'GET', url: 'change_partial', dataType: 'html'。单击称为后端控制器操作的链接,返回呈现的 HTML 部分。但是提交带有验证错误的表单会呈现“创建”路径localhost:3000/my_resource,并且单击链接会导致错误。通过更改修复url: 'my_resource/change_partial'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
相关资源
最近更新 更多