原生ajax基礎

来源:http://www.cnblogs.com/xie-zhan/archive/2016/11/01/6018003.html
-Advertisement-
Play Games

/*ajax對象的成員常用屬性:responseText:以字元串形式接收伺服器端返回的信息responseXML:以Xml Document對象形式接收伺服器返回的信息readyState:返回當前請求的狀態0:剛創建ajax對象1:已經調用open方法2:已經調用send方法3:已經返回部分數據 ...


/*
ajax對象的成員
常用屬性:
responseText:以字元串形式接收伺服器端返回的信息
responseXML:以Xml Document對象形式接收伺服器返回的信息
readyState:返回當前請求的狀態
0:剛創建ajax對象
1:已經調用open方法
2:已經調用send方法
3:已經返回部分數據
4:請求完成,數據返回完整
onreadystatechange:事件,當ajax狀態readyState發生變化的時候要觸發執行
【為了獲得較多的狀態,最好在創建好ajax對象後就設置
最多可以感知1/2/3/4 四種狀態】
status:返回當前請求的http狀態碼【200--ok 304--請求緩存 404--沒有此頁面 403--禁止訪問】
statusText:返回當前請求的響應行為碼
常用方法;
open() 創建新的http請求
send() 把請求發送給服務端
abort() 取消當前請求
*/
1.創建ajax對象

主流瀏覽器方式
火狐、谷歌、蘋果、Safari、Opera包括IE7以上版本的瀏覽器
var xhr = new XMLHttpRequest();

IE(6/7/8)方式
var xhr = new ActiveXObject("Microsoft.XMLHTTP");//最原始的方式
var xhr = new ActiveXObject("Msxml2.XMLHTTP");//升級
var xhr = new ActiveXObject("Msxml2.XMLHTTP.3.0");//升級
var xhr = new ActiveXObject("Msxml2.XMLHTTP.5.0");//升級
var xhr = new ActiveXObject("Msxml2.XMLHTTP.6.0");//IE維護的最高版本

2.發起對伺服器的請求
//瀏覽器方式請求:打開瀏覽器,輸入請求地址,敲回車發送請求

//給ajax設置事件,接收伺服器端發來的請求
xhr.onreadystatechange = function(){
if(readyState==4){
console(xhl.responseText);
}
}

//創建新的http請求(並設置請求地址)
//open(請求方式get/post,url請求地址)
xhr.open("get","XX.php");

//發送請求
//send(get-null/post-給伺服器傳遞的信息)
xhl.send(null);

3.
var nm = document.getElementById("username").value;
ajax的get請求需要註意兩個地方
//xhr.open("get","xx.php?name="+nm+"&addr=beijing")
①在url地址後面以請求字元串(傳遞的get參數信息)形式傳遞數據
②對"中文"、=、&等特殊符號處理

//在php裡邊可以用函數urlencode()/urldecode()對特殊符號進行編碼、反編碼處理
//在JavaScript裡面可以通過encodeURIComponent()對傳遞的特殊符號(例如:$、=等)進行編碼處理
//同時對"中文"也會進行編碼處理
nm = encodeURIComponent(nm);
encodeURIComponent()編碼後的信息是%後接兩個十六進位數

ajax的post請求需要註意的四個地方
//var info = "name="+nm+"&age=23";
//xhr.send(info);
①給伺服器傳遞數據需要調用send(請求字元串數據)方法
//以下setRequestHeader()方法必須要在open()方法後調用
//xhr.setRequestHeader("content-type","application/x-www-form-urlencoded")
②調用方法setRequestHeader()把傳遞的數據組織為xml格式(模仿form表單傳遞數據)
③傳遞的中文信息無需編碼,像&、=等仍需編碼
④該方式請求的同時也可以傳遞get參數信息,同時使用$_GET接收該信息

5.同步、非同步
ajax對象.open(方式 get/post , url地址 , [非同步true]同步false);
ajax是可以與伺服器進行(非同步或同步)交互的技術之一。
非同步:同一個時間點允許執行多個進程。
同步:同一個時間點只允許執行一個進程。

6.瀏覽器對動態程式文件緩存的處理解決:
① 給請求的地址設置隨機數【推薦】
②給動態程式設置header頭信息,禁止瀏覽器對其緩存

7.對xml的對象的接收和處理
ajax負責去伺服器請求xml信息,使用responseXML屬性接收
js裡面的DOM技術負責處理xml信息(與處理html方式一致)
document/普通元素對象.getElementByTagName();

8.
//在JavaScript裡邊,把字元串"string"變為對象"object"
var obj = "{name:"kitty",age:5}";
//eval(字元串參數) 字元串參數變為表達式運行
eval("var cat ="+obj);//eval("var cat = {name:"kitty",age=5}")
console.log(cat);

9.FormData使用註意
①每個表單域必須有name屬性
②不能設置setRequestHeader頭
③特殊符號無需編碼
④在form標簽裡邊無需設置enctype="multipart/form-data"屬性(即便有上傳文件域也不需要設置)
(無刷新上傳附件,FormData可以收集上傳的文件域信息)

10.ajax對象->upload->onprogress
ajax對象有成員屬性upload,其也是一個對象,該對象有onprogress屬性。該屬性是一個"事件"。該事件每間隔0.1秒就執行一次,執行的過程中會感知當前的附件上傳情況,例如可以感知附件的"總大小",目前"已上傳大小"等相關信息。


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

-Advertisement-
Play Games
更多相關文章
  • 前言 今天複習一下SpringMVC+Hibernate的搭建,本來想著將Spring-Security許可權控制框架也映入其中的,但是發現內容太多了,Spring-Security的就留在下一篇吧,這篇主要搭建SpringMVC4.1.4和Hibernate4.3.8,之前也打了好多SpringMV ...
  • 轉自:https://yq.aliyun.com/articles/8611 微服務架構的理論基礎 - 康威定律 摘要可能出乎很多人意料之外的一個事實是,微服務很多核心理念其實在半個世紀前的一篇文章中就被闡述過了,而且這篇文章中的很多論點在軟體開發飛速發展的這半個世紀中竟然一再被驗證,這就是康威定律 ...
  • 在我的博客《Hibernate總結(一)》在對資料庫的增刪改查前後重覆的使用了得到Session與關閉Session等操作,因此我想到了模板設計模式。 模板設計模式概述: 定義一個操作中的演算法的骨架,而將步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重定義演算法的某些特定步驟。 廢話不 ...
  • 閱讀目錄 前言 六邊形架構 終於開始建項目了 DDD中的3個臭皮匠 CQRS(Command Query Responsibility Segregation) 結語 閱讀目錄 前言 六邊形架構 終於開始建項目了 DDD中的3個臭皮匠 CQRS(Command Query Responsibilit ...
  • 一、簡介 do_App的openPage支持16種過場動畫,這個示例直觀的展示16種動畫的效果。適合初學者。 二、效果圖 三、相關下載 https://github.com/do-project/code4do/tree/master/open_animation 四、相關討論 http://bbs ...
  • 線上預覽 插件說明 - jbox 是一款基於 jQuery 的多功能對話框插件,能夠實現網站的整體風格效果,給用戶一個新的視覺享受。 運行環境 - 相容 IE6+、Firefox、Chrome、Safari、Opera 等主流瀏覽器。備註:IE不支持邊框的圓角樣式,不推薦大家使用蛋痛的IE瀏覽器。 ...
  • 本篇為完結篇。主要講述如何造出輪子的高級特性。 一. css方法的高級操作 先看本文第一部分所講的dQuery css方法 javascript //css方法 dQuery.prototype.css=function(attr,value){ if(arguments.length==2){// ...
  • CSS
    引入 <link rel=”stylesheet” type=”text/css” href="style.css"/> <style type="text/css">@import "style.css"</style>文字屬性 屬性名稱 屬性值 說明font-style normal 正常顯示 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...