• 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会自动生成一个
    但是必须在后台获取它生成的名称并用它括住返回的值
     
    如果这帖子能帮到你,就是我花时间写的价值所在,我希望后来的朋友们可以少走些弯路!
  • 相关阅读:
    浅谈ruby中的block及yield
    Node.js使用TCP通讯
    JavaScript垃圾回收机制
    node.js的Promise库-bluebird示例
    使用pkg打包Node.js应用的方法步骤
    windows server 2012 安装 VC14(VC2015) 安装失败解决方案
    pm2命令,端口查询,mongodb服务启动,nginx服务启动,n模块的使用,搭建nodejs服务器环境,搭建oracledb服务器环境 linux的环境搭建
    linux+node.js+redis+mongodb+nginx环境的搭建
    nginx.exe启动错误:bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
    windows下nginx的安装及使用
  • 原文地址:https://www.cnblogs.com/Hexllo/p/4702423.html
Copyright © 2020-2023  润新知