如何利用script標籤構建跨域ajax

來源:互聯網
上載者:User

要解決ajax跨域問題,網上給出的方法有二:
1是構建伺服器端的代理。簡而言之,就是ajax中調用的實質還是原生url,而伺服器端替js去取回遠端地址。
2.利用script標記,產生一個

標籤。在js載入完成後,再執行後續操作。
就是將原來建立xmlHTTPrequest對象的操作改成了建立script標籤的操作.
這裡給出一個例子:
#ajah.js

var  Ajah=function(url,varname,handleSuccess,handleFailure)...{ 
        /**//** 
        * handleSuccess,handleFailure must be functions 
        * */ 
        script = document.createElement("script"); 
        script.src=url; 
        var handler = function(str) 
        ...{ 
                handleSuccess(str); 
        } 
        script.onload = function() 
        ...{ 
                var json=eval(varname); 
                handler(json); 
        } 
        if(window.ie) 
        ...{ 
                script.onreadystatechange = function() 
                ...{ 
                        if(script.readyState=='complete'||script.readyState== 'loaded') 
                        ...{ 
                                var json=eval(varname); 
                                if(typeof json != 'undefined') 
                                ...{ 
                                        handler(json); 
                                } 
                        } 
                } 
        } 
        document.body.appendChild(script); 
}

 

而在網頁中應這樣調用:
#demo.html

<pre> 
        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> 
<html> 
<head> 
  <meta name="generator" content= 
  "HTML Tidy for Linux (vers 1 September 2005), see www.w3.org"> 
  
  <title></title> 
        <script src="mootools.js"></script> 
        <script src="ajah.js"></script> 
</head> 
  
<body> 
<script>... 
var ajah=new Ajah("data.js","json198",function(str)...{ 
        console.debug("returned:"); 
        console.debug(str); 
}, 
function(str)...{}); 
</script> 
</body> 
</html> 
</pre>

 

被調用的資料檔案如下
#data.js

var json198="hello,this is json198";

 

funciton Ajah(url,varname,handleSuccess,handleFailure){…}
Ajah這個建構函式調用四個參數:
url:遠端地址
varname:遠端返回資料的變數名
handleSuccess:載入完畢後載入的函數
handleFailure:暫時沒用上

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.