非同步交互之Ajax原生編寫

来源:http://www.cnblogs.com/xianfeng90/archive/2016/01/21/5147006.html
-Advertisement-
Play Games

一提到非同步交互大家就會說ajax,仿佛ajax這個技術已經成為了非同步交互的代名詞.那下麵將研究ajax的核心對象!利用ajax實現非同步交互無非4步:1.創建ajax核心對象2.與伺服器建立連接3.向伺服器發送請求4.接收伺服器響應的數據看似神秘的非同步交互當明確這4步後,也許在大家腦海裡已經有了初步的...


一提到非同步交互大家就會說ajax,仿佛ajax這個技術已經成為了非同步交互的代名詞.那下麵將研究ajax的核心對象!

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

1.創建ajax核心對象

2.與伺服器建立連接

3.向伺服器發送請求

4.接收伺服器響應的數據

看似神秘的非同步交互當明確這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);
                              }  
                          };

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在網頁的佈局過程中,經常會用到float屬性來實現頁面的左右佈局,但是有個問題就是父元素的高度並不能根據子元素的高度自適應。比如下麵這段代碼: title p left right 在瀏覽器...
  • “你為什麼要做一個程式員?”,“因為我有一顆改變世界的心!”,“說人話”,“因為我沒朋友。。。” -------------純屬娛樂===============================================...
  • 近期在使用bootstrap這個優秀的前端框架,這個框架非常強大,框架裡面有下拉菜單、按鈕組、按鈕下拉菜單、導航、導航條、麵包屑、分頁、排版、縮略圖、警告對話框、進度條、媒體對象等,bootstrap都已經預先定義好了,當我們製作網頁上,只需直接調用裡面的css即可 bootstrap是一個響...
  • 在網上看到很多的JQuery跨域請求的文章,比較有意思。這裡我發表一個Servlet與JQuery配置實現跨域的代碼,供大家參考。不足之處請指教原理:JavaScript的Ajax不可以跨域,但是可以通過向本地的一個Servlet發出請求,由Servlet完成跨域。再把遠程的結構返回給客戶端。這樣A...
  • 只能輸入中文
  • css樣式表中四種屬性選擇器1> 簡易屬性tag[class]{ font-weight:bold }It will affect all tag with any class.e.g. or 2>精確屬性值a[href="http://www.cnblogs.cn"][title="textTi....
  • 一、Asp.net中的線程池設置 在Asp.net的服務處理中,每當伺服器收到一個請求,HttpRuntime將從HttpApplication池中獲取一個HttpApplication對象處理此請求,請求的處理過程將被排入線程池中,對於Asp.net來說,在Machine.config文件的pr....
  • 關於繼承好吧,說到底JS還是原型繼承的,而不是類繼承。所以在這個上面要經常用到prototype去繼承另一個對象。所有的構造器函數都約定命名為首字母大寫的形式,並且不以首字母大寫的形式拼寫任何其它的東西。當然一個更好的備選方案是根本就不用new。(太棒了,你說什麼就是什麼咯,我就當JS沒這個東西了)...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...