首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖来自其他文件夹/域的jQuery.ajax -使用相对url发出

覆盖来自其他文件夹/域的jQuery.ajax -使用相对url发出
EN

Stack Overflow用户
提问于 2018-08-09 08:44:24
回答 1查看 105关注 0票数 0

我们正在从多个位置和域加载脚本,其中之一是具有jQuery.ajax函数定义。

对jQuery.ajax的调用是从不同的位置和域使用相对url完成的,例如- jQuery.ajax("my/ relative /url")。

这通常会相对于调用方所在的位置执行对url的请求。

我的要求是捕获以"/ My / specific“开头的特定urls,然后重写它们,但是对于所有其他urls-按原样继续。

我所做的是在代码中覆盖jQuery.ajax,检查url,并使用原始的ajax调用调用apply:

代码语言:javascript
复制
            jQuery.ajax = function (url) {
                if (url) {
                    if (typeof url === "string") {
                        if (url.startsWith('/my/specific/url')) {
                            arguments[0] = url.replace('/my/specific/url', '/my/changed/url');
                        }
                        else {
                            arguments[0] = url;
                        }
                    }
                    else {
                        if (url.url.startsWith('/my/specific/url')) {
                            url.url = url.url.replace('/my/specific/url', '/my/changed/url');
                        }
                    }
                }
                return _fnAjaxOrig.apply(this, arguments);
            };

相对 urls被称为它时,请求是相对于我的代码而不是调用者代码来的。

有什么解决办法吗?

我不能访问jquery.ajax的调用者,也不能访问它的定义。

EN

回答 1

Stack Overflow用户

发布于 2018-08-09 08:51:50

使用$.ajaxSetup()beforeSend回调

类型:Function( jqXHR jqXHR, PlainObject settings ) 一个预请求回调函数,可用于在发送对象之前修改jqXHR (在jQuery 1.4.x,XMLHTTPRequest中)。使用此设置自定义标头等。jqXHR和设置对象作为参数传递。这是一个Ajax事件。在false函数中返回beforeSend将取消请求。

代码语言:javascript
复制
$.ajaxSetup({
  beforeSend: function(jqXhr, options) {
    if (options.url.startsWith("/your/url")) {
      options.url = "/another/url";
    }
  }
});

Note:此处指定的设置将影响对$.ajax或基于Ajax的衍生工具(如$.get() )的所有调用。这可能会导致不良行为,因为其他调用者(例如,插件)可能期待正常的默认设置。因此,我们强烈建议不要使用这个API。相反,在调用中显式设置选项,或者定义一个简单的插件来这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51762517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档