Ajax的原理和應用

來源:互聯網
上載者:User

標籤:非同步請求   xmlhttprequest   同步請求   ajax   

一、什麼是AJAX

    AJAX(Asynchronous JavaScript and XML)非同步 JavaScript 和 XML,通過與後端介面互動,實現頁面中局部重新整理。

二、AJAX原理

    AJAX是通過XMLHttpRequest(所有現代瀏覽器均支援 XMLHttpRequest 對象,IE5 和 IE6 使用 ActiveXObject)與伺服器互動,擷取資料後通過javascript操作DOM來顯示資料。

三、XMLHttpRequest對象

1、建立XMLHttpRequest對象

function createXHR(){    var xmHttp = null;    if(window.XMLHttpRequest){        xmlHttp = new window.XMLHttpRequest();    }else{        xmlHttp = new window.ActiveXObject(‘Microsoft.XMLHTTP‘);    }     return xmlHttp;}

2、向伺服器發送請求

向伺服器發送請求,要使用XMLHttpRequest的open和send方法


open()方法,規定請求的類型、URL、是否非同步請求

open(method,url,async)

mehtod:請求的類型(POST或GET)

url:請求的URL

anync:是否是非同步請求,true(非同步)、false(同步),預設為非同步請求


send()方法,將請求發送到伺服器

send(string)

string:僅用於POST請求,發送請求所帶的參數


發送GET請求

var xmlHttp = createXHR();xmlHttp.onreadystatechange = function(){    if(xmlHttp.readyState == 4 && xmlHttp.status == 200){        var result = xmlHttp.responseText;        //對應的處理邏輯    }}xmlHttp.open(‘GET‘,‘test.php?aa=aa&bb=bb‘,true);xmlHttp.send();

發送POST請求

var xmlHttp = createXHR();xmlHttp.onreadystatechange = function(){    if(xmlHttp.readyState == 4 && xmlHttp.status == 200){        var result = xmlHttp.responseText;        //對應的處理邏輯    }}xmlHttp.open(‘POST‘,‘test.php‘,true);xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");xmlHttp.send(‘aa=aa&bb=bb‘);

使用POST方式發送請求時,需要設定http頭資訊,通過send方法傳遞要發送的參數

當請求是非同步請求時 ,需要通過onreadystatechange事件註冊一些響應後的操作,如果是同步請求,只需要在send方法後直接調用xmlHttp.responseText,不需要註冊onreadystatechange

onreadystatechange:每當readyState發生改變時,都會觸發該事件

readyState:儲存XMLHttpRequest的狀態,從0到4發生變化

  • 0: 請求未初始化

  • 1: 伺服器串連已建立

  • 2: 請求已接收

  • 3: 請求處理中

  • 4: 請求已完成,且響應已就緒

status:從伺服器端返回的響應代碼,比如200(就緒),404(未找到)


responseText:從伺服器返回的字串資料

responseXML:從伺服器返回的XML資料,需要作為XML對象解析

四、完整執行個體

php代碼,test.php

<?php    $uname = $_GET(‘uname‘);        $age = $_GET(‘age‘);        $result = array(               ‘uname‘ => $uname,                ‘age‘ => $age        );        echo json_encode($result);?>

javascript代碼:

function createXHR(){    var xmHttp = null;    if(window.XMLHttpRequest){        xmlHttp = new window.XMLHttpRequest();    }else{        xmlHttp = new window.ActiveXObject(‘Microsoft.XMLHTTP‘);    }    return xmlHttp;}var xmlHttp = createXHR();xmlHttp.onreadystatechange = function(){    if(xmlHttp.readyState == 4 && xmlHttp.status == 200){        var result = xmlHttp.responseText;        alert(result);    }}xmlHttp.open(‘GET‘,‘test.php?uname=kaixin&age=16‘,true);xmlHttp.send();

    

本文出自 “我就是標準” 部落格,請務必保留此出處http://liumanwei.blog.51cto.com/3005291/1437981

相關文章

聯繫我們

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