jquery JSONP解决跨域

[size=large][color=darkred]1.模拟跨域[/color][/size]

<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>


[size=large][color=darkred]2.getJson解决跨域[/color][/size]

// 跨域请求问题
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;
}
}


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

差不过这意思,如有不对请谅解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值