原生js實現Ajax

来源:http://www.cnblogs.com/colima/archive/2016/03/30/5339227.html
-Advertisement-
Play Games

一般來說,大家可能都會習慣用JQuery提供的Ajax方法,但是用原生的js怎麼去實現Ajax方法呢? JQuery提供的Ajax方法: 原生js實現Ajax方法: 註釋: 1,open() 方法需要三個參數: 第一個參數定義發送請求所使用的方法(GET 還是 POST)。與 POST 相比,GET ...


    一般來說,大家可能都會習慣用JQuery提供的Ajax方法,但是用原生的js怎麼去實現Ajax方法呢?

    JQuery提供的Ajax方法:

 1 $.ajax({
 2   url: ,
 3   type: '',
 4   dataType: '',
 5   data: {
 6          
 7   },
 8   success: function(){
 9          
10   },
11   error: function(){
12          
13   }
14 })

  原生js實現Ajax方法:

 1 var Ajax={
 2     get: function (url,fn){
 3         var obj=new XMLHttpRequest();  // XMLHttpRequest對象用於在後臺與伺服器交換數據          
 4         obj.open('GET',url,true);
 5         obj.onreadystatechange=function(){
 6             if (obj.readyState == 4 && obj.status == 200 || obj.status == 304) { // readyState==4說明請求已完成
 7                 fn.call(this, obj.responseText);  //從伺服器獲得數據
 8             }
 9         };
10         obj.send(null);
11     },
12     post: function (url, data, fn) {
13         var obj = new XMLHttpRequest();
14         obj.open("POST", url, true);
15         obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // 發送信息至伺服器時內容編碼類型
16         obj.onreadystatechange = function () {
17             if (obj.readyState == 4 && (obj.status == 200 || obj.status == 304)) {  // 304未修改
18                 fn.call(this, obj.responseText);
19             }
20         };
21         obj.send(data);
22     }
23 }

註釋:

1,open() 方法需要三個參數:

 第一個參數定義發送請求所使用的方法(GET 還是 POST)。與 POST 相比,GET 更簡單也更快,並且在大部分情況下都能用。然而,在以下情況中,請使用 POST 請求:

  • 無法使用緩存文件(更新伺服器上的文件或資料庫)
  • 向伺服器發送大量數據(POST 沒有數據量限制)
  • 發送包含未知字元的用戶輸入時,POST 比 GET 更穩定也更可靠

 第二個參數規定伺服器端腳本的 URL(該文件可以是任何類型的文件,比如 .txt 和 .xml,或者伺服器腳本文件,比如 .asp 和 .php (在傳迴響應之前,能夠在伺服器上執行任務))。

 第三個參數規定應當對請求進行非同步地處理(true(非同步)或 false(同步))。

2,send() 方法可將請求送往伺服器。

3,onreadystatechange 屬性存有處理伺服器響應的函數。

4,readyState 屬性存有伺服器響應的狀態信息。每當 readyState 改變時,onreadystatechange 函數就會被執行。

    通過學習對XMLHttpRequest對象又熟悉了一些,哈哈


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

-Advertisement-
Play Games
更多相關文章
  • <input type="checkbox">: 1 2 3 4 5 2012歐洲杯"死亡之組"小組出線的國家隊是:<br> <input type="checkbox" name="nation" value="Germany">德國 <input type="checkbox" name="na ...
  • 一:結構 註意,1 必須是三張以上圖片,2 最外層carousel-wrap必須要有一個寬高 二:CSS 三:JS 基於JQ, 四:測試地址 http://game.feiliu.com/zk/new/plugin/default.html 五:demo源碼下載 http://files.cnblo ...
  • 前端開發命名規則很重要,但是網上的命名規則一大篇,下麵是我總結的一些常用的短語,希望能幫到大家,肯定不全,歡迎大家補充。 1.如果是模塊,可以這樣首碼: 彈出:pop 公共:global(縮寫:gb) 標題:title,tit 提示:hint 菜單:menu 信息:info 預覽:pvw 導航:na ...
  • 本文主要對GET與POST基本區別進行彙總並掌握,如有錯誤與遺漏之處,請指出。 文章出處:http://www.cnblogs.com/useryangtao/ 1. HTTP HTTP(即超文本傳輸協議)是現代網路中最常見和常用的協議之一,設計它的目的是保證客戶機和伺服器之間的通信。 HTTP 的 ...
  • 一、基礎雜記 1. document.write() 1 <script type="text/javascript"> 2 document.write('<h2>我愛你</h2>'); 3 </script> 2. 變數必須聲明才能使用: 使用var聲明:局部變數; 沒有使用var聲明:全局變數 ...
  • 最近在看湯姆大叔的"深入理解JavaScript系列",寫得真的不錯,對於我而言特別是12章到19章,因為大叔研究的點,就主要是從底層來研究JavaScript為什麼會出現鐘種特有的語言現象,所以學習了大叔的文章後,自己對JavaScript的認知也更明白了,以前好多地方是知其然而不知其所以然,你要 ...
  • 面試第一天,總結下碰到的不熟練的問題,備查: $state.go(to [, toParams] [, options]) Returns a Promise representing the state of the transition. Convenience method for trans ...
  • 本站微博上正在送書《JavaScript高級程式設計》走過路過的不要錯過,參與方式,關註本站及簡尋網+轉發微博:http://weibo.com/1748018491/DoCtp6B8r 本站聯合簡尋網#尋找千里碼# 正在送書《javascript高級程式設計》第三版 5本,對這本書期待的朋友可以去 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...