AJAX是什麼? AJAX的互動模型(流程)?同步和非同步區別? AJAX跨域的解決辦法?

來源:互聯網
上載者:User

標籤:style   http   color   os   io   使用   java   ar   strong   

ajax是非同步 JavaScript 和 XML。通過在後台與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。

互動流程:

     1--啟動  擷取XMlHttpRequest對象
             2--open 開啟url通道,並設定非同步傳輸 
             3--send 發送資料到伺服器
             4--伺服器接受資料並處理,處理完成後返回結果 
             5--用戶端接收伺服器端返回

同步和非同步

同步:指令碼會停留並等待伺服器發送回複然後再繼續

非同步:指令碼允許頁面繼續其進程並處理可能的回複

Ajax跨域問題:


如果在A網站中,我們希望使用Ajax來獲得B網站中的特定內容,如果A網站與B網站不在同一個域中,那麼就出現了跨域訪問問題。

IE對於跨域訪問的處理是,彈出警告框,提醒使用者。如果使用者將該網站納入可信任網站,或者調低安全層級,那麼這個問題IE就不會在提醒你。

FireFox等其它非微軟的瀏覽器遇到跨域訪問,則解決方案統一是拒絕訪問。

幾個可行的方案:

1、Web代理的方式。即使用者訪問A網站時所產生的對B網站的跨域訪問請求均提交到A網站的指定頁面,由該頁面代替使用者頁面完成互動,從而返回合適的結果。此方案可以解決現階段所能夠想到的多數跨域訪問問題,但要求A網站提供Web代理的支援,因此A網站與B網站之間必須是緊密協作的,且每次互動過程,A網站的伺服器負擔增加,且無法代使用者儲存session狀態。

2、on-Demand方式。MYMSN的門戶就用的這種方式,不過MYMSN中不涉及跨域訪問問題。動態控制script標記的產生,通過修改script標記的src屬性完成對跨域頁面的調用。此方案存在的缺陷是,script的src屬性完成該調用時採取的方式時get方式,如果請求時傳遞的字串過大時,可能會無法正常運行。不過此方案非常適合彙總類門戶使用。

3、iframe方式。查看過醒來在javaeye上的一篇關於跨域訪問的文章,他提到自己已經用iframe的方式解決了跨域訪問問題。資料提交跟擷取,採用iframe這種方式的確可以了,但由於父視窗與子視窗之間不能互動(跨域訪問的情況下,這種互動被拒絕),因此無法完成對父視窗效果的影響。

4、使用者本地轉儲方式:IE本身依附於windows平台的特性為我們提供了一種基於iframe,利用記憶體來“繞行”的方案,即兩個window之間可以在用戶端通過windows剪貼簿的方式進行資料轉送,只需要在接受資料的一方設定Interval進行輪詢,獲得結果後清除Interval即可。FF的平台獨立性決定了它不支援剪貼簿這種方式,而以往版本的FF中存在的外掛程式漏洞又被fixed了,所以FF無法通過記憶體來完成暗渡陳倉。而由於檔案操作FF也沒有提供支援(無法通過Cookie跨域完成資料傳遞),致使這種技巧性的方式只能在IE中使用。

5、結合了前面幾種方式,在訪問A網站時,先請求B網站完成資料處理,再根據返回的標識來獲得所需的結果。這種方法的缺點也很明顯,B網站的負載增大了。優點,對session也實現了保持,同時A網站與B網站頁面間的互動能力增強了。最重要的一點,這種方案滿足了我的全部需要。

總結一下,以上方案中可選擇的情況下,我最推薦on-Demand方式,在不需要提交大量資料的情況下,這種方式能夠解決您的大部分問題。

AJAX是什麼? AJAX的互動模型(流程)?同步和非同步區別? AJAX跨域的解決辦法?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.