ajax跨域

来源:互联网 发布:管家婆软件操作步骤 编辑:程序博客网 时间:2024/06/05 00:15

1、当一个项目通过ajax访问另一个项目时,如果两个项目不在同一台服务器上,就会出现ajax跨域问题

2、ajax的同源策略导致了跨域问题

3、有两种方法解决ajax跨域问题:$.ajax()和$.jsonp(),但是被访问的项目必须返回jsonp格式数据

4、json格式数据:{"a":1,"b":"2"},jsonp格式数据:callback({"a":1,"b":"2"})

代码如下:

前端代码:

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script><script type="text/javascript" src="../js/jquery.jsonp.js"></script></head><script type="text/javascript">$(document).ready(function(){// 通过ajax解决ajax跨域问题$.ajax({url:'',dataType:'jsonp',jsonpCallback: 'callback', // 指定jsonp格式拼接的字符串,任意值,可以以参数的形式传到后台,后台用该参数值拼接type:'get',success: function(data){alert("success-----"+data);},error: function(data){alert("error-----"+JSON.stringify(data));}});// 通过jsonp解决ajax跨域问题// 需引入jquery.jsonp.js文件/* $.jsonp({"url":'',callback: 'callback', // 指定jsonp格式拼接的字符串,任意值"success":function(data){alert(JSON.stringify(data));},"error":function(data){alert("error-----"+JSON.stringify(data));}}); */});</script><body></body></html>

后台代码:

public void jsonptest(HttpServletRequest request, @RequestParam Map<String, String> params, HttpServletResponse response){Map<String, String> result = new HashMap<String, String>();result.put("retCode", "00");result.put("retMsg", "访问成功");outText("callback("+JSON.toJSONString(result)+")", response);return;}

5、最近找到了一种新的方法,只需在后端设置response的header即可

response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Access-Control-Allow-Methods", "POST");


原创粉丝点击