jsonp - jQuery跨域调用

      最近在开发中碰到jQuery跨域调用问题. 下面记录这次解决问题的方法.

1.服务端: 在struts2配置文件中增添下面配置参数

添加 "<param name="callbackParameter">jsoncallback</param>"

写道
<action name="getTestJson" class="com.hikin.TestAction">
<result type="json">
<param name="callbackParameter">jsoncallback</param>
<param name="root">result</param>
</result>

</action>

 

2.客户端调用:

写道
方法一:
var url="http://192.168.1.149/hikin/getTestJson.html?jsoncallback=? ";
jQuery.getJSON(url,null,function(rs){
                    alert(rs);
});
方法二:
jQuery.ajax({
            type: "get",
            cache: false,
            dataType: "jsonp",
              jsonp: 'jsoncallback',

            url: url,
            data: data,
            async: false,
            success: function(rs){
                alert(rs);
            }
        });

 

 

下面是网上关于jsonp的介绍-

一种叫JSON with Padding 的技术,简称 JSONP

 

1.JSONP(JSON with Padding-填充json数据也就是常用的json跨域方式):利用script标签,通过特定的src地址的调用,来执行一个客户端的js函数,在 服务器端生成相对的数据(json格式)并以参数的形式传递给这个客户端的js函数并执行这个函数,前提是需要服务器端的数据输出支持。       

2. 为什么使用JSONP:由于 JSON 只是一种含有简单括号结构的纯文本,因此许多通道都可以交换 JSON 消息。因为同源策略 的限制,我们不能在与外部服务器进行通信的时候使用 XMLHttpRequest。而JSONP是一种可以绕过同源策略的方法,即通过使用 JSON 与 <script> 标记相结合的方法,从服务端直接返回可执行的JavaScript函数调用或者JavaScript对象。       

3.谁在使用JSONP:dojo、JQuery、Youtube GData API 、Google Social Graph API 、Digg API 、GeoNames webservice、豆瓣API、Del.icio.us JSON API等。

4.jQuery中跨域访问的核心原理:JS文件注入,因为因为script标签的src属性是可以跨域的,利用 script标签的src属性直接返回非本域名下的数据,具体采用的方式称为:jsonp

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值