Struts2與JQurey ajax配合跨域請求

來源:互聯網
上載者:User


ajax

$.ajax({url:"https://www-xxx.com/xxx/getCounselorDetailByHxCode",data: {xxx:x},dataType : 'jsonp',jsonp:"callback", type:'post',error: function(data) { console.log(data);},success:function(data){//alert("suc");console.log(data);},});

其中 dataType指定為jsonp,jsonp 指定為 callback(隨意),然後看struts2的配置:

<action name="getCounselorDetailByHxCode"class="xxx" method="getCounselorDetailByHxCode"><result name="success" type="json"><param name="callbackParameter">callback</param><param name="noCache">true</param></result></action>

其中,這一條

<param name="callbackParameter">callback</param>
中callback與ajax中jsonp欄位設定相同

列印出來的 data 是 structs請求類執行個體的所有能夠get的成員對象:

HXCodeList: null
HXType: null
content: null
counselorDetail: "success"
counselorDetailByHxCode: "success"
spResult: Object
typetypeStr: null
urlStr: null
userHXCode: "zeKNVeDc208"
userHXSubCode: null
userInfoId: null
__proto__: Object


js中,

data = data.spResult;
con += '<br><img src="' + data.body.counselorMap.userIcon + '" width="150px" />';


來訪問結果



201611.1 補充:

jsonp方式跨域只能是字串,所以struts在返回時應指定字串變數


<result name="success" type="json"><param name="root">jsonpResult</param><param name="callbackParameter">URGOO_CALLBACK</param><param name="noCache">true</param></result>



其中,jsonpResult 為 String 類型

public String actionMethod() throws Exception {spResult = serviceMethod();jsonpResult = JsonUtils.convert(spResult) ;return SUCCESS;}


除此之外,還有一種方法可以指定跨域:


在 actionMethod中,

HttpServletResponse response = ServletActionContext.getResponse();response.setHeader("Access-Control-Allow-Origin", "*");


此時的前端代碼完全不用改變。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.