1. 程式人生 > >java 跨域-利用jsonp

java 跨域-利用jsonp

clas odi ref 版本 win 成功 spl cati microsoft

Tomcat在 7.0.73, 8.0.39, 8.5.7 版本之前的可以用,不然後臺報錯

/**
     * 前端首頁跳轉後臺
     */
    @RequestMapping("WebIndex.get")
    @ResponseBody
    public String WebIndex(HttpServletRequest request,HttpServletResponse response){
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        
//數據 List studentList = new ArrayList<>(); studentList.add("wu1"); studentList.add("wu2"); studentList.add("wu3"); String result=new Gson().toJson(studentList); //前端傳過來的回調函數名稱 String callback = request.getParameter("callback");
     String callback2 = request.getParameter("name");//獲得前端的參數 System.out.println(callback2);
//用回調函數名稱包裹返回數據,這樣,返回數據就作為回調函數的參數傳回去了 result = callback + "(" + result + ")"; logger.debug("前端首頁跳轉後臺"); return result; }

返回的參數 result = callback + "(" + result + ")"; 括號裏的result必須是Json字符串形式,我在這糾結了一整天

前端用jq的ajax 即可 ,雖然失敗不會走error路線,但是保證成功就行

<script>
        window.onload
=function(){ //url格式:地址?openid=密碼&nickname=賬號,split進行分割 var url = decodeURI(window.location.href); var argsIndex = url.split("?openid="); var argsIndex2 = argsIndex[1].split("&nickname="); var openid = argsIndex2[0]; var nickname = argsIndex2[1]; alert("openid="+openid+"---"+"nickname="+nickname) var ip = getip(); ip += "WebIndex.get"; var reqBody = { username: "id", password: "pwd" }; var sendJson = { body: reqBody } $.ajax({ url: ip, type: "GET", dataType: "jsonp", //指定服務器返回的數據類型 data:{ ‘name‘:‘zuzuzu‘ }, success: function (data) { var result = JSON.stringify(data); //json對象轉成字符串 alert(result); } }); } //獲得Ip地址 function getip() { if(window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET", "../ip.xml", false); xmlhttp.send(); xmlDoc = xmlhttp.responseXML; var ip = xmlDoc.getElementsByTagName("root")[0].childNodes[0].nodeValue; return ip } </script>

getip方法是從xml裏讀取地址,本方法是從後臺重定向過來的,附帶了參數,所以先進行拆分後面跟著的參數,不需要的可以直接看ajax,Tomcat服務器版本有要求,要註意看

java 跨域-利用jsonp