1

我有一个部署在 tomcat 上的 JSP-servlets 应用程序。现在我需要从我的 html 进行 web(Ajax)调用并调用 CQ5 网页(完全在 CQ 实例中运行)。当我点击提交按钮时,它进入了ajax调用的错误方法。这是代码

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://crypto-js.googlecode.com/svn/tags/2.5.4/build/crypto/crypto-min.js"></script>
<script src="/resources/scripts/mysamplecode.js" type="text/javascript"></script>
<script type="text/javascript">
  
$(document).ready(function() {
  
 
 $("#myAjaxRequestForm").submit(function(e){
        e.preventDefault();
 });
   
 
 $("#myButton").click(function(e){
          
   //get the form data and then serialize that
         dataString = $("#myAjaxRequestForm").serialize();
   
   

var username = 'admin';
var password = 'admin';
var url = 'http://localhost:4502/content/geometrixx/en/products/triangle/jcr:content/par/text_0.infinity.json'; 

$.ajax({
    type: 'GET',
    url: 'http://localhost:4502/content/geometrixx/en/products/triangle/jcr:content/par/text_0.infinity.json',
    dataType : 'json',
    'beforeSend': function(xhr) {
         var bytes = Crypto.charenc.Binary.stringToBytes('admin' + ":" + 'admin');
         var base64 = Crypto.util.bytesToBase64(bytes);
        xhr.setRequestHeader("Authorization", "Basic " + base64); //May need to use "Authorization" instead
    },
    error : function() {
        alert('errro');
    },
    sucess: function(result) {
    alert('done');
    }
    }); 
     }); 
  }); 
</script>
<div id="allContent">
  <div id="myExample">
 <form id="myAjaxRequestForm">  
   <h1> Please enter the Order Information -</h1>
    <label for="orderId">Order Id:</label>
    <input id="orderId" name="orderId" type="text"><br/>
    <br/>
    <label for="zipCode">ZIP Code:</label>
    <input id="zipCode" name="zipCode" type="text"><br/>
    <br/>
    <input id="myButton" type="button" value="Submit">
</form>
</div>
 <div id="ajaxResponse">

</div>
</div>
</head></html>
4

4 回答 4

0

从安全的角度来看,这听起来是错误的 - 您正在传递用户和密码以在客户端执行 - 暴露您的身份验证。

最好打开资源的权限,以便匿名可以写入它(POST)然后传递凭据。

于 2013-08-06T18:51:24.343 回答
0

我可以在 chrome 控制台中看到 json。但我得到了解析错误。没有调用 Jquery17989898。

这是代码...

var user = 'admin';
var pw = 'admin';
var url = 'http://localhost:4502/content/geometrixx/en/products/triangle/jcr:content/par/text_0.infinity.json'; 
alert("i1");

var authToken = null;
$.ajax({
    url: 'http://localhost:4502/content/geometrixx/en/products/triangle/jcr:content/par/text_0.infinity.json',
    type: "POST",
    crossDomain: true,
    dataType: "jsonp",
    data: JSON.stringify({ "Username" : user, "Password" : pw, "Type" : "SaaSGrid"}),
    success: function(data)
    {
        alert("dsadsadsa");
         authToken = data.Token;
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert("jqXHR : " + jqXHR +
        " \n**** text Status : " + textStatus +
        " \n**** text Status : " + errorThrown);
        }
 });

{"textIsRich":"true","jcr:lastModifiedBy":"admin","sling:resourceType":"foundation/components/text","jcr:createdBy":"admin","jcr:created":" 2010 年 11 月 3 日星期三 00:41:59 GMT-0400","jcr:lastModified":"2010 年 11 月 5 日星期五 11:14:54 GMT-0400","jcr:primaryType":"nt:unstructured","text" :"

三角形外角的度数等于不相邻的两个内角的度数之和;这就是外角定理。任何三角形的三个外角(每个顶点一个)的量度之和是 360 度。</p>\n</p>\n"}

于 2013-07-21T15:14:55.717 回答
0

我认为您应该多解释一下您的情况。您正在尝试从 CQ5 实例访问页面,但可能只需要在作者实例中进行身份验证。访问发布实例时,该页面可能不需要任何身份验证。

你会一直访问作者实例吗?如果您稍后将切换到发布实例,则只需在 CQ5 中调整权限以使页面公开会更容易。

于 2013-07-28T12:04:39.307 回答
0

尝试beforeSend稍微更改您的处理程序并调试错误:

beforeSend: function (xhr) {
    var base64 = btoa(username + ":" + password);
    xhr.setRequestHeader("Authorization", "Basic " + base64);
},
error: function (jqXHR, textStatus, errorThrown) {
    console.log(jqXHR);
    console.log(textStatus);
    console.log(errorThrown);       
},

如果它不起作用,请粘贴这 3 个的结果console.log()

于 2013-07-20T19:00:18.487 回答