2012-06-25 66 views
4

我使用apache tomcat作爲Web服務器。 我已經在tomcat上部署了webservices。 如果我通過jquery ajax從本地文件系統發佈請求到tomcat webservice作爲響應,我得到了403錯誤。獲取NetworkError的Ajax jquery調用:403響應中的禁止錯誤

如果我從同一個容器運行相同的腳本,我從web服務獲得有效的響應。

我正在使用以下代碼。

function callservice() 
    { 
    jQuery.support.cors = true; 
     var mobNo = document.getElementById('mobileNo').value; 
     var acctNo = document.getElementById('accountNo').value; 
     //var id = document.getElementById('id').value; 
     var custNo = document.getElementById('customerId').value; 

     //var mobNo = document.getElementById('txt_name').value; 
     //alert("mobileNo" + mobNo+"accountNo" + acctNo+"customerId "+custNo); 

     var url = "http://localhost/mobile-services/rest/user/";   
     var dataVal = {}; 
     dataVal["mobileNo"] = mobNo; 
     dataVal["accountNo"] = acctNo; 
     dataVal["customerId"] = custNo; 

     var forminput = JSON.stringify(dataVal); 

    $.ajax({ 
     url: url, 
     type: "POST", 
     data:forminput, 
     processdata: true, 
     contentType: "application/json;", 
     beforeSend: function() { }, 
     headers : 
     { 
      "Content-Type" : "application/json", 
      "Accept" : "application/json"    
     }, 
     success: function (data) 
     {   
      if (data.authenticated==true) 
      { 
       window.location.replace("http://localhost:8080/mobile-services/selected_services.jsp?userId="+data.id); 
      } 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) 
     { 
      try 
      { 
       alert(JSON.stringify(XMLHttpRequest) + "\n" + textStatus + "\n" + errorThrown); 
      } 
      catch (ex) { alert("Exception occured.. "); } 
      finally { } 
     } 
    }); 
} 

請建議。

+1

你有沒有部署apache的tomcat ontop或者它是獨立的?我假設你通過Apache將你的請求路由到tomcat,因爲你指定了你的url爲http:// localhost –

+0

你可以嘗試在你的$ .ajax請求中添加dataType:「jsonp」, jsonp:「callbackname」 ? –

+0

其獨立安裝。我試着用數據類型作爲jsonp。我正在獲取方法不允許的異常。 –

回答

3

因爲web服務器假定它跨域通信這就是爲什麼你得到403

您需要使用JSONP這個

https://github.com/jaubourg/jquery-jsonp

基本用法。

$.jsonp({ 
     var url = "abc.do"; 
     success: function(jsonData, textStatus) { 
      $.jsonp({ 
       url: url+"?callback=?", 
       success: function(jsonData, textStatus) { 

       }, 
       error: function(xOptions, textStatus){ 

       } 
     }); 

     }, 
     error: function(xOptions, textStatus){ 

     } 
}); 
+0

你能告訴我如何使用這個插件嗎? –

+0

http://www.jquery4u.com/json/jsonp-examples/#.T-gsN7Ue4s4 這將解釋如何使用JSONP的所有細節。 –

+0

看到我編輯的答案 –