zoukankan      html  css  js  c++  java
  • 一个简单的jsonp

    /**
    url :请求的地址
    json : 各种参数
    callback:回调函数

    **/


    function jsonp(url,json,cbName,callBack){

    //1.先弄一个随机数 用作服务端回调函数的名称
    var cb = new Date().getTime()+Math.random();
    cb = new String(cb).replace(".","");
    json[cbName] = "cb_"+cb;
    //把回调函数 预先定义好 方便服务端返回的函数调用
    window[json[cbName]] = function(data){
    //当调用回调函数的时候 把相关的资源清除掉 减少内存的占用
    document.getElementsByTagName("head")[0].removeChild(oScript);
    window[json[cbName]] = null;
    callBack && callBack(data);
    }
    //2 拼接服务端地址 url
    var tempUrl = json2Url(json);
    var url = url + "?" + tempUrl;
    //3.创建script 标签
    var oScript = document.createElement("script");
    oScript.src = url;
    oScript.type = "text/javascript";
    document.getElementsByTagName("head")[0].appendChild(oScript);
    }

    /**
    把json 转成相应的url

    **/
    function json2Url(json){
    var arr = [];
    var index = 0;
    for(var i in json){
    arr[index] = i+"="+json[i];
    index++;
    }
    return arr.join("&");
    }

    遇到的两个问题  1.jquery getJSON 方法是 callback 后不加 问号的话  就会报 不允许跨域访问

                          2.回调函数为数字时  客户端调用不了  

                       

  • 相关阅读:
    php项目目录显示
    初识fastadmin
    php环境变量
    tp5数据库——时间查询
    tp5数据库——聚合查询
    tp5数据库——链式操作
    tp5数据库——查询语法
    MongoDB踩坑记录
    RxJS合并操作符:concat、merge、forkJoin、zip、 combineLatest 、concatAll、mergeAll、switchAll
    Git Flow
  • 原文地址:https://www.cnblogs.com/freeDesignLife/p/3706811.html
Copyright © 2011-2022 走看看