首頁  >  文章  >  web前端  >  Ajax+js實現非同步交互

Ajax+js實現非同步交互

巴扎黑
巴扎黑原創
2017-07-03 10:36:56973瀏覽

本文要跟大家分享的是原生javascript結合ajax實現的非同步互動的方法和程式碼,非常的簡單實用,有需要的小夥伴可以參考下。

一提到非同步互動大家就會說ajax,彷彿ajax這個技術已經成為了非同步互動的代名詞.那下面將研究ajax的核心物件!

利用ajax實現非同步互動無非4步驟:

  1. 建立ajax核心物件

  2. ##與伺服器建立連線

  3. ##向伺服器發送請求
  4. 接收伺服器回應的資料
  5. 看似神秘的非同步互動當明確這4步後,也許在大家腦海裡已經有了初步的思路了

首先我們創建ajax的核心對象,由於瀏覽器的兼容問題我們在創建ajax核心對象的時候不得考慮其兼容問題,因為要想實現異步互動的後面步驟都基於第一步是否成功的創建了ajax核心物件.

 function getXhr(){
      // 声明XMLHttpRequest对象
      var xhr = null;
      // 根据浏览器的不同情况进行创建
       if(window.XMLHttpRequest){
      // 表示除IE外的其他浏览器
           xhr = new XMLHttpRequest();
       }else{
         // 表示IE浏览器
         xhr = new ActiveXObject('Microsoft.XMLHttp');
       }
       return xhr;
 }
 // 创建核心对象
 var xhr = getXhr();

透過上述程式碼我們已經成功的創建了ajax核心物件,我們保存在變數xhr中,接下來提到的ajax核心物件都將以xhr取代.

第二步就是與伺服器建立連線,透過ajax核心物件呼叫open(method,url,async)方法.

open方法的形參解釋:

method表示請求方式(get或post)

url表示請求的php的位址(注意當

請求類型

為get的時候,請求的資料將以問號跟隨url地址後面,下面的send方法中將傳入null值)async是個布林值,表示是否異步,預設為true.在最新規範中這一項已經不在需要填寫,因為官方認為使用ajax就是為了實現異步.

xhr.open("get","01.php?user=xianfeng");//这是get方式请求数据
xhr.open("post","01.php");//这是以post方式请求数据

第三步我們將向伺服器發送請求,利用ajax核心物件呼叫send方法

如果是post方式,請求的資料將以name=value形式放在send方法裡發送給伺服器,get方式直接傳入null值

xhr.send("user=xianfeng");//这是以post方式发送请求数据
xhr.send(null);//这是以get方式

 第四步驟接收伺服器回應回來的資料,使用onreadystatechange事件監聽伺服器的通訊狀態.透過readyState屬性取得伺服器端目前通訊狀態.status取得

狀態碼

,利用responseText屬性接收伺服器回應回來的資料(這裡指text類型的字串格式資料).後面再寫XML格式的資料和大名鼎鼎的json格式資料.

xhr.onreadystatechange = function(){
                  // 保证服务器端响应的数据发送完毕,保证这次请求必须是成功的
                if(xhr.readyState == 4&&xhr.status == 200){
                // 接收服务器端的数据
                var data = xhr.responseText;
                 // 测试
                 console.log(data);
                 } 
             };

以上是Ajax+js實現非同步交互的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn