前端之家收集整理的这篇文章主要介绍了
jsonP跨域解决,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在
解决跨域问题的时候,用到jsonp,前端
代码仅仅在url中
添加一个参数callback=?
- <html>
- <head>
- <script type="text/javascript" src="/js/jquery-1.8.3.js"></script>
- <script type="text/javascript">
-
- $(document).ready(function(){
-
- $("button").click(function(){
- //在url的后面添加参数:callback=?,问好的值有jQuery产生随机数
- ,配置后在本地可以通过该链接访问链接后的Controller,并且接收Controller的返回值。
- $.getJSON("/updateUser?name=donaldDuck&callback=?",function(data,status){
- // alert("数据:" + data[0].userName + "\n状态:" + status);
- // var dataObj=eval("("+data+")");
-
- alert(data.id);
-
- });
-
- });
- });
- </script>
- </head>
-
- <body>
- <p>姓名:<input type="text" id="test" value="米老鼠"></p>
- <br>
-
- <button id="button" >显示值</button>
- </body>
-
- </html>
- controller后端代码:
- <pre class="java" name="code">@ResponseBody
- @RequestMapping("/updateUser")
- //在参数列表中添加正常接收的参数外,还需要添加一个参数callback,用来接收在前端带过来的callback随机数。
- public String updateUser(String name,String callback) throws IOException {
-
-
- //返回简单字符串的时候可以直接返回,返回类型String,// 添加注解@ResponseBody
- 返回字符串的格式为:jsonp :jQuery183017739112760886932_1438865715964({"id":"a"}),括号括起来json数据
- String aa= callback+"({\"id\":\"a\"})";
- System.out.println("jsonp :"+aa);
- return aa;
-
- }