多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2

json教程

  • 關于 JSON
  • JSON 教程

    json格式

    JSON解析

    JSON遍歷

    JSON調用

    JSON轉換

    JSON獲取

    JSON字符串

    JSON數組

    AJAX跨域請求獲取JSON數據

    閱讀 (2202)
    我們都知道,AJAX的一大限制是不允許跨域請求。 不過通過使用JSONP來實現。JSONP是一種通過腳本標記注入的方式,它是可以引用跨域URL的js腳本,不過需要提供一個回調函數(必須在您自己的頁面上),因此,你可以自己處理結果。 讓我們看看JSONP的是怎么在jQuery,MooTools的,Dojo Toolkit中實現的。 

    jQuery的JSONP
    jQuery.getJSON方法:

    Js代碼
    代碼如下:
    jQuery.getJSON("http://search.twitter.com/search.json?callback=?",{ 
        q: "Arsenal" 
    },function(tweets) { 
        // Handle response here 
        console.info("Twitter returned: ",tweets); 
    });
    
    或者 類似
    Js代碼
    代碼如下:
    $.ajax({ 
             type:"get", 
             data:"random="+Math.random(), 
             url:url, 
             dataType:"jsonp", 
             jsonp:"callback", 
             success:function(data){ 
             $.each(data, function(key, val) { 
             $("#myDiv").html($("#myDiv").html()+val.cvalue+"</br>"); 
             }); 
            } 
          }); 
    
    回調方法的參數 通過getJSON 就可以獲取 到json對象

    MooTools JSONP
    MooTools 需要Request.JSONP Class , 可以從這里下載MooTools More .  選擇Request.JSONP,
    這樣 從另一個域獲取json就是小菜一碟了.

    Js代碼
    代碼如下:
    new Request.JSONP({ 
        url: "http://search.twitter.com/search.json", 
        data: { 
            q: "Arsenal" 
        },//提交的參數, 沒有參數可以不寫 
            callbackKey: 'jsoncallback',//自己定義回調函數的參數名稱 
            onComplete: function(tweets) { 
            // Log the result to console for inspection 
            console.info("Twitter returned: ",tweets); 
        } 
    }).send(); 
    
    如果自己定義了回調函數的參數名稱. 跟jquery一樣.
    服務器端你需要這樣去取得:

    Js代碼
    代碼如下:
    String callback = request.getParameter("jsoncallback");//取得回調方法名 
            response.setHeader("Cache-Control", "no-cache"); 
            response.setContentType("text/json;charset=UTF-8"); 
            PrintWriter out; 
            try { 
                out = response.getWriter(); 
                out.print(callback+"("+message+")");//這里是關鍵.主要就是這里 
                out.flush(); 
                out.close(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
    
    順便說一句: 個人比較喜歡mootools的語法結構,和框架設計思路. 再次贊美!

    Dojo JSONP
    JSONP 在Dojo Toolkit 中需要用上dojo.io.script (點擊可以查看示例)

    Js代碼
    代碼如下:
    // dojo.io.script is an external dependency, so it must be required 
    dojo.require("dojo.io.script"); 
    
    // When the resource is ready 
    dojo.ready(function() { 
    
        // Use the get method 
        dojo.io.script.get({ 
            // The URL to get JSON from Twitter 
            url: "http://search.twitter.com/search.json", 
            // The callback paramater 
            callbackParamName: "callback", // Twitter requires "callback" 
            // The content to send 
            content: { 
                q: "Arsenal" 
            }, 
            // The success callback 
            load: function(tweetsJson) {  // Twitter sent us information! 
                // Log the result to console for inspection 
                console.info("Twitter returned: ",tweetsJson); 
            } 
        }); 
    }); 
    

    JSONP是一種非常有效的,可靠的,容易實現的遠程數據獲取方式。JSONP的策略也使開發人員能夠避免繁瑣的服務器代理方式,很方便的獲取數據。

    JSONP(JSON with Padding)是一個非官方的協議,它允許在服務器端集成Script tags返回至客戶端,通過javascript callback的形式實現跨域訪問(這僅僅是JSONP簡單的實現形式)。

    客戶端代碼:

    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />  
      <script type="text/javascript">  
        function jsonpCallback(result) {  
          //alert(result);  
          for(var i in result) {  
            alert(i+":"+result[i]);//循環輸出a:1,b:2,etc.  
          }  
        }  
        var JSONP=document.createElement("script");  
        JSONP.type="text/javascript";  
        JSONP.src="http://crossdomain.com/services.php?callback=jsonpCallback";  
        document.getElementsByTagName("head")[0].appendChild(JSONP);  
      </script>

    服務端代碼

    <?php  
      
        //服務端返回JSON數據  
        $arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);  
        $result=json_encode($arr);  
        //echo $_GET['callback'].'("Hello,World!")';  
        //echo $_GET['callback']."($result)";  
        //動態執行回調函數  
        $callback=$_GET['callback'];  
        echo $callback."($result)";

    關閉
    程序員人生
    主站蜘蛛池模板: 看黄色免费网站 | freee性欧美| 成年人小视频在线观看 | 国产成人啪精品午夜在线播放 | 男人午夜网站 | 男人天堂网2022 | 亚洲国产网站 | 亚洲一级片在线播放 | 一级国产20岁美女毛片 | 无码中文av有码中文av | 国产人成久久久精品 | 亚洲a免费 | 无人区一区二区三区乱码 | 日本动漫免费看 | 久久精品蜜芽亚洲国产a | 伊人99在线| 无人区乱码1区2区3区mv | 美国成人a免费毛片 | 亚洲国产激情一区二区三区 | 久久亚洲精品中文字幕三区 | 国内精品视频 | 春色视频免费版高清在线观看 | 欧美大片毛片aaa免费看 | 国产一级淫片a免费播放口之 | 欧美2区| 国产精品久久久久久久久免费 | 亚洲 校园 欧美 动漫 制服 | 国产精品所毛片视频 | 亚洲日本中文 | 欧美日本日韩aⅴ在线视频 欧美日本视频一区 | 综合自拍亚洲综合图区美腿丝袜 | 一级片www| 国产精品久久久久久久久久久久久久 | 亚洲欧美日产综合一区二区三区 | 中文字幕无线码中文字幕免费 | 日本在线视频一区 | 国产欧美另类久久久精品免费 | 久久国产一久久高清 | 亚洲欧美日韩在线观看看另类 | 亚洲欧美一区二区三区另类 | 18欧美|