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+")" ; 

  .....

}

...

 

 

 

 

 

posted @ 2013-12-27 18:34  行-云  阅读(483)  评论(0编辑  收藏  举报