簡單AJAX請求JSon資料

來源:互聯網
上載者:User

標籤:代碼   and   情況   chrome   win   size   簡單   script   span   

Ajax 全名為Asynchronous JavaScript and XML(非同步 JavaScript 和 XML)。

它是一種在無需重新載入整個網頁的情況下,能夠更新部分網頁的技術。

在傳統方法中,當我們需要向伺服器請求資料時,瀏覽器需要等待該請求完成之後才能夠進行下一步的操作,而在此之前是不能夠對網頁進行其他的操作,如果因請求的資料過大或者網路延遲等原因而造成的等待伺服器響應的時間過久,無疑會使得使用者的體驗感降低,甚至有可能直接導致程式掛起。

而如果我們採用AJax技術,則可以避免這種情況的發生,對於 web 開發人員來說,發送非同步請求是一個巨大的進步。很多在伺服器執行的任務都相當費時。AJAX 出現之前,這可能會引起應用程式掛起或停止。

通過 AJAX,JavaScript 無需等待伺服器的響應,而是:

  • 在等待伺服器響應時執行其他指令碼
  • 當響應就緒後對響應進行處理

XMLHttpRequest 是 AJAX 的基礎。 

所有現代瀏覽器均支援 XMLHttpRequest 對象(IE5 和 IE6 使用 ActiveXObject)。

XMLHttpRequest 用於在後台與伺服器交換資料。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。

建立 XMLHttpRequest 對象的文法:

var iable=new XMLHttpRequest();

老版本的 Internet Explorer(IE5 和 IE6)使用 ActiveX 對象:

var iable=new ActiveXObject("Microsoft.XMLHTTP");

為了應對所有的現代瀏覽器,包括 IE5 和 IE6,請檢查瀏覽器是否支援 XMLHttpRequest 對象。如果支援,則建立 XMLHttpRequest 對象。如果不支援,則建立 ActiveXObject :

var xmlhttp;if (window.XMLHttpRequest)  {// code for IE7+, Firefox, Chrome, Opera, Safari  xmlhttp=new XMLHttpRequest();  }else  {// code for IE6, IE5  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }

向伺服器發送請求:

我們可以利用XMLHttpRequest的open(method,url,async)和send(string)方法向伺服器發送請求。

其中open的三個參數分別是:規定請求的類型、URL 以及是否非同步處理請求。

  • method:請求的類型;GET 或 POST

GET 還是 POST?

與 POST 相比,GET 更簡單也更快,並且在大部分情況下都能用。

然而,在以下情況中,請使用 POST 請求:

        • 無法使用快取檔案(補救伺服器上的檔案或資料庫)
        • 向伺服器發送大量資料(POST 沒有資料量限制)
        • 發送包含未知字元的使用者輸入時,POST 比 GET 更穩定也更可靠
//範例程式碼
//getxmlhttp.open("GET","demo_get2.asp?fname=Bill&lname=Gates",true);xmlhttp.send();//postxmlhttp.open("POST","ajax_test.asp",true);xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");//為了能夠像表單那樣操作,需使用setRequestHeader方法xmlhttp.send("fname=Bill&lname=Gates")//字串只能用於post
  • url:檔案在伺服器上的位置,請求的伺服器位址
  • async:true(非同步)或 false(同步)

send的string則是只能用於post。

完整範例程式碼(訪問Yahoo的天氣API,查看返回的JSON資料):

// 執行個體化非同步請求對象var xhr = new XMLHttpRequest();// 監聽狀態xhr.onreadystatechange = function() {    if (xhr.readyState === 4) {        if (xhr.status === 200) {//狀態代碼200 -> ok            var result = JSON.parse(xhr.responseText);            console.log(result);        }    }}// 初始化請求xhr.open(‘GET‘, ‘https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json‘, true);// 發送請求xhr.send();

 

簡單AJAX請求JSon資料

聯繫我們

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