CQ:为什么jquery将/ ajax添加到我的Web服务URL的开头?

时间:2015-06-25 19:53:26

标签: javascript jquery internet-explorer-9 cq5 aem

我编写了一个以RSS提要的形式输出数据的小servlet。它在/services/rss.servlet上的我的网络服务器上运行,并且很好地返回数据。

在我的网页中,我试图从rss servlet加载数据,如下所示:

$(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

为什么我在网址上看到 / ajax ?它在JQuery中似乎完全没有记录。特别是,我在IE9中一直注意到这种行为有怪癖模式,但在IE9中没有标准浏览器模式。

1 个答案:

答案 0 :(得分:0)

我发现这个问题对于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,它会扫描<head>这些目录并找出CQ“应该”的位置。

在我们的案例中,<head>中的第一项是[{1}},而CQ认为这意味着应用程序存储在/ ajax下。

从Felix控制台的CQ 5.6开始,有一个配置可以打败这个功能。 http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.685.html/forum__omci-we_are_on_cq54.html

您还可以强制在<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>中禁用它,以便它不会自动检测。

<head>