zoukankan      html  css  js  c++  java
  • N久前写的一个JSONP请求方法

    function getJSON(url, params, callback, charset){    
        
    var w = window,
            query 
    = url.indexOf("?"== -1 ? "?" : "&",
            head,
            callback 
    = isFunction(params) ? params : callback,
            charset 
    = charset || "utf-8"
        
    function getTimeVer(){
            
    return new Date().getTime();
        }
        
        
    function isFunction(obj){
            
    return Object.prototype.toString.call(obj) === "[object Function]";
        }
        
        
    function load(url){
            
    var script = document.createElement('script'),
                done 
    = false;
            script.src 
    = url;
            script.async 
    = true;
            script.charset 
    = charset;
     
            script.onload 
    = script.onreadystatechange = function() {
                
    if ( !done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") ) {
                    done 
    = true;
                    script.onload 
    = script.onreadystatechange = null;
                    
    if ( script && script.parentNode ) {
                        script.parentNode.removeChild( script );
                    }
                }
            };
            
    if ( !head ) {
                head 
    = document.getElementsByTagName('head')[0];
            }
            head.appendChild( script );        
        }
        
        
    if(typeof params === "string"){
            params 
    = params || "";
            query 
    += "&";
        }
    else{
            params 
    = params || {};
            
    for (var key in params ) {
                
    if ( params.hasOwnProperty(key) ) {
                    query 
    += encodeURIComponent(key) + "=" + encodeURIComponent(params[key]) + "&";
                }
            }
        }
        
    var jsonVar = "jsonp" + getTimeVer();
        w[jsonVar] 
    = function(data){
            callback.call(
    null, data);
            
    try{
                
    delete w[jsonVar];
            }
    catch(e){
                
            }
            w[jsonVar] 
    = null;
        };
        
        load(url 
    + query + "callback=" + jsonVar);
        
    }

    document.getElementById(
    "click").onclick = function(){
        getJSON(
    "http://www-0f3d8c090ce:8080/foundation/servlet/JsonCallBack"function(data){
            alert(data.name);
        });
    };
  • 相关阅读:
    C#: Create a WebRequest with HTTP Basic Authentication
    C# 集合
    BAT CMD 批处理文件脚本 -2
    年龄排序
    士兵买香蕉
    ACM交换生问题
    ACM卡片游戏
    ACM费马大定理
    ACM定外卖问题
    ACM汽车行程问题求最少的支付钱数
  • 原文地址:https://www.cnblogs.com/sniper007/p/2171170.html
Copyright © 2011-2022 走看看