1.由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域
2.解决方法:
a.script标签加载并立即执行
browser:html>js
document.getElementById("btn").onclick=function(){
var str=$('<script type="text/javascript" src="http://127.0.0.1:8080/testJsonp/test.jsp?name=fun">');
$(document).append(str);
}
Server:jsp
<%
String name=request.getParameter("name");
String html="\'<div id=\"gg\" name=\"ggb\" style=\"color:red\">fdsfdsfd</div>\'";
out.print(“$(document.body).append(”+html+“)”);//自动在boty添加html
%>
或者在html定义方法,在jsp调用方法,并传参
b.Ajax的Jsonp,自动解析json为js对象
browser:html>jq
$.ajax("http://127.0.0.1:8080/testJsonp/test.jsp",{
dataType:'jsonp',
jsonp:'funName',
error:function(xhr,errMes,errObj){
alert(errMes);
},
success:function(data){//jQuery18309719266761046812_1484988035397({name:'xiaoming',age:20})
alert(data.name);
}
});
Server:jsp
<%
String name=request.getParameter("funName");
name+="({name:\'xiaoming\',age:20})";
out.print(name);
%>