码迷,mamicode.com
首页 > 编程语言 > 详细

java 跨域-利用jsonp

时间:2018-12-25 15:53:26      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:return   cti   system   函数的参数   call   cte   name   [1]   服务器   

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

标签:return   cti   system   函数的参数   call   cte   name   [1]   服务器   

原文地址:https://www.cnblogs.com/chaoswu/p/10174220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!