js跨域访问(jsonp)
原理很简单:当页面加载完后,动态执行一个js函数(只不过这个函数是根据页面响应来调用的)
这里有两个页面:
1.smartspeed/jsonp.html,它要取另一个项目中jsp响应的数据
<script type="text/javascript">
function getRemoteJson(data){
alert(data.name+" "+data.desc);
}
</script>
<script type="text/javascript" src="http://172.30.1.123:8080/extjs/jsonp.jsp"></script>
页面1定义了一个函数getRemoteJson,并用script引用了另外一个页面(如同引用另一个域下的js文件,且此js文件中包含引用
当前页面内方法的语句
)
2.extjs/jsonp.jsp
<%
response.setContentType("text/javascript");
String callback = "getRemoteJson({name:'sky',desc:'champion'})";
out.print(callback);
%>
响应getRemoteJson({name:'sky',desc:'champion'}),相当于在js中调用一个函数
也就是说页面2响应回来的文本就是一个调用页面1内js方法的语句,且给这个方法传递了参数