jsonp跨域调用action
原理:<script src=
src是可以引用其他服务器上的js的,
如在页面A有
<script src='http://192.168.1.100:8080/test/file/delFile.action'></script>
delFile.action所做的事就是输出一段如下代码 response.getWrite().write('fun1("xiaoming")');
而在页面A有个script如下
function fun1(who){
alert(who+' com on....');
}
则在页面A载入的时候由于引用了http://192.168.1.100:8080/test/file/delFile.action,其实就等同于写了如下代码
<script >
fun1("xiaoming") ;
</script>
所以,fun1会被调用执行,这就是原理了。
利用ajax调用
$.ajax({ type : 'get',//必须是get async:false, url : 'http://192.168.1.100:8080/test/file/delFile.action', data: {'fileId':'123'}, dataType : 'jsonp', //jsonp: 'fn',//在服务端定义的执行页面js方法的function名字,还有一个叫什么jsonpCallback,好像是这个的参数,这个就是回调函数,不过不写的话jquery会生成一个,还是不写的好,不用去单独写个方法,也不用担心方法命名重复 success:function(json){ alert(json.xx); } });
服务端示例
//页面方法名 //private String fn ;页面不写jsonp的话,这里也不用写,jquery会传递一个名为callback的参数 public void delFile(){ String json = "{'xx':'yy'}"; String cb = request.getParameter("callback") ; out.write(cb+"("+json+")" ; ..... } ...