在回调函数中访问jQuery Ajax请求的URL

Chr*_* W. 50 javascript ajax jquery

有没有办法可以看到我用jQuery执行Ajax请求时请求的URL?

例如,

var some_data_object = { ...all sorts of junk... }
$.get('/someurl.php',some_data_object, function(data, textStatus, jqXHR) {
   var real_url = ? # <-- How do I get this
})
Run Code Online (Sandbox Code Playgroud)

如何访问jQuery实际用于发出请求的URL?也许某些方法/属性jqHXR?我在文档中找不到它.

谢谢.

air*_*bai 76

在success方法中设置一个断点,然后观察

this.url
Run Code Online (Sandbox Code Playgroud)

是请求的真实网址.


Dro*_*ror 16

这是一个可能的解决方案:

  1. 通过实现beforeSend回调函数,在将ajax调用发送到服务器之前捕获它.
  2. 保存网址和数据
  3. 在您生成的错误消息中报告它.

    var url = "";
    
    $.ajax({
      url: "/Product/AddInventoryCount",
      data: { productId: productId, trxDate: trxDate, description: description, reference: reference, qtyInCount: qtyInCount }, //encodeURIComponent(productName)
      type: 'POST',
      cache: false,
      beforeSend: function (jqXHR, settings) {
        url = settings.url + "?" + settings.data;
      },
      success: function (r) {
        //Whatever            
      },
      error: function (jqXHR, textStatus, errorThrown) {
        handleError(jqXHR, textStatus, errorThrown, url);
      }
    });
    
    function handleError(jqXHR, textStatus, errorThrown, url) {
       //Whatever
    }
    
    Run Code Online (Sandbox Code Playgroud)


Chr*_*oom 8

使用$.ajaxPrefilter:

// Make sure we can access the original request URL from any jqXHR objects
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
  jqXHR.originalRequestOptions = originalOptions;
});

$.get(
  'http://www.asdf.asdf'
).fail(function(jqXHR){
  console.log(jqXHR.originalRequestOptions);
  // -> Object {url: "http://www.asdf.asdf", type: "get", dataType: undefined, data: undefined, success: undefined}
});
Run Code Online (Sandbox Code Playgroud)

http://api.jquery.com/jQuery.ajaxPrefilter/