jsonp使用规范

这两天花了很多时间弄研究jsonp这个东西,

可是无论我怎么弄..TMD就是不进入success函数,并且一直进入error函数...让我着实DT啊.

可以看下我之间的提问(这就是我遇到的烦恼)..

http://q.cnblogs.com/q/74391/

经过N次的折腾之后,偶然间..发现这么一个与众不同的帖子,让我解决了jsonp的疑惑.(为什么说他与众不同?因为他不像网上其它那些千篇一律的复制粘贴转载..我甚至怀疑转载的人们有没有测试过到底能不能用,反正我试了是不能的,这样的转载没意义,甚至浪费看贴人的时间,强烈反对.)

好了,帖子的地址如下:

http://my.oschina.net/erichsbc/blog/170780

里边有一句非常简洁却关键的字"关键的地方是返回的字符串,返回的字符串必须包含jsonp的回调函数名称"

 

我测试后,终于解决了.

好了,现在我把我的总结写出如下:

 

必须满足2个条件,否则它不进入success:function(){}而是直接进入error函数
 
必须满足2个条件,否则它不进入success:function(){}而是直接进入error函数
 
1,前台必须指定回调函数的名称,
但可以不用声明回调函数,直接在success:function(x){..}里对返回的数据处理
 
如下:
 function Test() {

            $.ajax({
                url: " http://api.com/commonAPI/JsonP?sessionID=fff",
                dataType: "jsonp",
                //自定义的jsonp回调函数名称"jsonpCallback",返回的json也必须有这个函数名称
                jsonpCallback: "OnCall",
                success: function (json) {
                    alert("OK");
                    alert(json);
                },
                error: function (xhr, status, error)
                {
                    alert("ER");
                    console.log(xhr);
                }
            });
        }
 
 
2,后台返回的字符串中必须包含前台所指定的回调函数的名称
 
至于返回的内容,除了要用回调函数括起来外,没有任何要求.返回什么数据都可以
 [HttpGet]
        public string JsonP(string sessionID)
        {
            //return "OnCall('as=882ffe,asdfo239')"; 
            return "OnCall(alert('FFF'))";
        }
 
 
如果前台不想指定回调函数的名称,
jquery会自动生成一个
但是必须在后台获取它生成的名称并用它括住返回的值
 
如果这帖子能帮到你,就是我花时间写的价值所在,我希望后来的朋友们可以少走些弯路!

 

转载于:https://www.cnblogs.com/Hexllo/p/4702423.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值