2012-07-05 52 views
0

我正在使用登录Web服务来验证用户。如何使用crossdomain ajax请求发布数据?

这些是Spring 3.0中的其他web服务,其设计方式是只接受POST方法的数据。

我能够使用GET将数据发送到Web服务。

但由于web服务的实现,我必须使用POST方法提交数据。

如果我使用jQuery的ajax请求与POST我得到403访问禁止的错误。

下面是GET请求的工作示例。

我对tomcat使用CORS过滤器来启用CORS支持。

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

     url = url+mobNo+"/"+acctNo+"/"+custNo; 

     $.getJSON(url, 
     function(data) 
     { 
      if (data.authenticated==true) 
      { 
       alert("data "+data); 
      } 
     }); 

} 

但是,如果我使用下面的代码,我得到403错误。

function callservice() 
    { 
     jQuery.support.cors = true; 
     var mobNo = "123123123"; 
     var acctNo = "123123123"; 
     var custNo = "123123123"; 

     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, 
     datatype:"jsonp", 
     crossDomain: true, 
     contentType: "application/json", 
     beforeSend: function() { }, 
     headers : 
     { 
      "Content-Type" : "application/json", 
      "Accept" : "application/json", 
      "Origin" : "http://localhost/", 
      "Access-Control-Allow-Origin" : "*" 
     }, 
     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 { } 
     } 
    }); 
} 

请建议。

+0

这是否帮助:: http://stackoverflow.com/questions/298745/how-do-i-send-a-cross-domain-post-request-via- javascript – 2012-07-05 11:54:20

回答