您的位置:首页 > Web前端 > JavaScript

jsonp跨域调用action

2013-12-27 18:34 120 查看
原理:<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+")" ;

  .....

}

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: