Javascript CQ:为什么jquery在我的web服务url的开头添加/ajax?
我编写了一个小servlet,它以RSS提要的形式输出数据。它在我的Web服务器上运行,位于/services/rss.servlet,并且很好地返回数据 在我的网页中,我尝试从rss servlet加载数据,如下所示:Javascript CQ:为什么jquery在我的web服务url的开头添加/ajax?,javascript,jquery,internet-explorer-9,aem,Javascript,Jquery,Internet Explorer 9,Aem,我编写了一个小servlet,它以RSS提要的形式输出数据。它在我的Web服务器上运行,位于/services/rss.servlet,并且很好地返回数据 在我的网页中,我尝试从rss servlet加载数据,如下所示: $(document).ready(function() { $.get("/services/rss.servlet") .done(function(data) { console.log("Success: " + data); })
$(document).ready(function() {
$.get("/services/rss.servlet")
.done(function(data) {
console.log("Success: " + data);
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
});
});
大多数情况下,这很好,我得到了数据。但有时请求会失败,我会在“网络调试”页面中看到以下请求:
Request GET /ajax/services/rss.servlet HTTP/1.1
为什么我看到我的URL前面有/ajax?它在JQuery中似乎完全没有文档记录。特别是,我在IE9的“怪癖”模式下一直注意到这种行为,但在IE9的标准浏览器模式下却没有注意到。我发现这个问题是Adobe CQ/WEM的一个“功能”所独有的 在“正常”布局中,CQ将公开以下子目录:
www.example.com/apps
www.example.com/libs
www.example.com/etc
但是,CQ包含的代码允许它托管在比文档根更深的相对URL中,以防您的目录结构碰巧是
www.example.com/subdirectory/cqRoot/apps
www.example.com/subdirectory/cqRoot/etc
www.example.com/subdirectory/cqRoot/libs
支持这一点的代码都是客户端javascript,它扫描
以查找这些目录,并找出CQ“应该在哪里”
在我们的例子中,
中的第一项是
,CQ认为这意味着应用程序存储在/ajax下
从Felix控制台的CQ 5.6开始,有一种配置可以阻止此功能
您还可以在
中强制禁用它,以便它不会自动检测
<script>
window.CQURLInfo = window.CQURLInfo || {};
CQURLInfo.contextPath = "";
</script>
window.CQURLInfo=window.CQURLInfo | |{};
CQURLInfo.contextPath=“”;