初體驗ajax跨域


  之前一直以為ajax是不能跨域的,從來也沒嘗試過。今天體驗了一下ajax跨域請求數據,分享一樣。

  公司做了一個純靜態HTML的網站,可是公司領導說讓加公告,因為我們的后台管理系統和靜態頁面在不同的服務器上,不同的域名,而HTML服務器也沒有PHP環境,這就需要兩個域之間的數據交換。討論了下各種的實現方式,淘汰了iframe,后來用script加載技術。具體如下:

<script src="http://www.baidu.com"></script>

  這個實現方法有一個局限性,如果需要傳遞參數怎么辦?例如:http://localhost/test/index.php?id=3

  首先這是一個HTML純靜態的頁面,只能用JS來獲取get參數。

  JS獲取get參數,去網上搜了下,代碼如下:

    var url=document.URL;
    var para='';
    if(url.lastIndexOf("?")>0)
    {
        para=url.substring(url.lastIndexOf("?")+1,url.length);
        var arr=para.split("&");
        para="";
        for(var i=0;i<arr.length;i++)
        {
           para = arr[i].split("=")[1];
        }
        //para 為第一個參數的值

  獲取了參數的值,拼裝成我們要加載的鏈接,這樣貌似就可以實現我們的功能了。

  其實則不然。我們實現的方法在於用javascript加載遠程鏈接。但是在加載之前我們需要獲得參數的值來確定鏈接(例:http://localhost/test/index.php?id=3),但是瀏覽器的工作機制是先加載完HTML才開始運行JS的腳本,前后順序矛盾,所以這種實現辦法宣告失敗!

  記得之前做過一個項目,類似於獲取新浪股票的數據,然后實時顯示。這個就用到了ajax的跨域。

  后來去網上搜了一下,發現JQuery對於Ajax的跨域請求有兩類解決方案,不過都是只支持get方式。分別是JQuery的 jquery.ajax jsonp格式和jquery.getScript方式。(http://www.open-open.com/lib/view/open1334026513327.html

  新浪股票獲取方式就是用到script的方式。

        $.ajax({
            url:"http://localhost/index.php?id="+para,
            dataType:"script",
            cache:"false",
            type:"GET",
            success:function(a){
                $("#title").html(announce_title);
                $("#date").html(announce_date);
                $("#content").html(announce_content);
            }
        }); 

  而http://localhost/index.php?id=3打印出來是這種格式的

  

var announce_title="mytitle"; var announce_date="2013-04-17 13:36:15"; var announce_content="this is a test";

  所以在遠程只要輸出上面這樣的數據格式,就可以實現html和系統間的數據交換了。

  又漲姿勢了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM