jquery JSONP解决跨域

1.模拟跨域
<script type="text/javascript">
	$(function(){
		// 同域请求
		/*
		$.get("${pageContext.request.contextPath}/demo5.action", function(data){
			alert(data);
		});
		*/
		
		// 跨域请求 当前域名 localhost
		
		// $.get 无法跨域
		/*
		$.get("http://www.test.cn:8080/jquery_ajax_day2/demo5.action", function(data){
			alert(data);
		});
		*/
		
		// 使用$.getJSON 实现跨域
		$.getJSON("http://www.test.cn:8080/jquery_ajax_day2/demo5.action","callback=?", function(data){
			alert(data.name);
		});
	});
</script>


2.getJson解决跨域
// 跨域请求问题
public class Demo5Action extends ActionSupport {
	// 回调函数名
	private String callback;

	public void setCallback(String callback) {
		this.callback = callback;
	}

	@Override
	public String execute() throws Exception {
		ServletActionContext.getResponse().setContentType("text/javascript;charset=utf-8");
		ServletActionContext.getResponse().getWriter().print(callback + "({\"name\":\"xxx\"})");
		return NONE;
	}
}


3.跨域原理
问题:localhost使用jsp,而该jsp访问test域名,服务器处理的数据会返回到localhost,而非test。造成跨域问题
原理:jsonp底层桶过javascript可以读取“任何”地址的js脚本片段
1:在jsp使用getJSON发送请求,拼接callback参数给服务器
2:服务器拼接getJSON的callback函数的参数,返回给jsp
3:jsp执行返回的js脚本片段(回调)
4:相当于ajax异步处理了这次请求

差不过这意思,如有不对请谅解。

你可能感兴趣的:(jsonp,jquery)