【原創】Ajax的用法總結

一、什么是Ajax

Ajax英文全稱為“ Asynchr JavsScript and XML”(異步的JavaScript和XML),是一種創建

交互式網頁的開發技術。

二、Ajax技術的核心

Ajax是一系列相關技術的融合,其核心包括XMLHttpRequest、JavsScript和DOM技術,數據格式

的不同可能會用到Json或者XML的技術。

XMLHttpRequest是它的核心的內容,它能夠為頁面中的JavaScript腳本提供特定的通信方式,

從而使頁面的javascript腳本和服務器之間形成動態交互的效果,XMLHTTPRequest的最大的優點

是頁面內的javascript腳本可以不用刷新頁面,而直接和服務器發生交互,從而實現頁面無刷新的效果。

三、XMLHttpRequest方法屬性描述

1、方法描述

abort()停止當前請求

getAllResponseHeaders()把HTTP請求的所有響應首部作為鍵/值對返回

getResponseHeader("header")返回指定首部的串值

open("method","URL",[asyncFlag],["userName"],["password"])建立對服務器的調用。method參數可以是GET、POST或PUT。

url參數可以是相對URL或絕對URL。這個方法還包括3個可選的參數,是否異步,用戶名,密碼

send(content)向服務器發送請求

setRequestHeader("header", "value")把指定首部設置為所提供的值。在設置任何首部之前必須先調用open()。

設置header并和請求一起發送 ('post'方法一定要 )

XMLHttpRequest 對象屬性描述

2、方法描述

onreadystatechange狀態改變的事件觸發器,每個狀態改變時都會觸發這個事件處理器,通常會調用一個JavaScript函數

readyState請求的狀態。有5個可取值:0 = 未初始化,1 = 正在加載,2 = 已加載,3 = 交互中,4 = 完成

responseText服務器的響應,返回數據的文本。

responseXML服務器的響應,返回數據的兼容DOM的XML文檔對象 ,這個對象可以解析為一個DOM對象。

responseBody服務器返回的主題(非文本格式)

responseStream服務器返回的數據流

status服務器的HTTP狀態碼(如:404 = "文件末找到" 、200 ="成功" ,等等)

statusText服務器返回的狀態文本信息 ,HTTP狀態碼的相應文本(OK或Not Found(未找到)等等)

四、Ajax工作原理原理

AJAX的工作原理相當于在用戶和服務器之間加了一個中間層,使用戶操作與服務器相應異步化。并不是所有的用戶請求

都提交給服務器,像一些數據驗證和數據處理等都交給AJAX引擎自己來做,只有確定需要從服務器讀取新數據時再由

AJAX引擎代為向服務器提交請求。如圖:

4418040-27b959cbd9d11a26

五、Ajax的優點

1、減輕服務器的負擔,提升了網站的性能。

2、無刷新更新頁面,減少了用戶等待網站加載的時間。

3、用戶體驗更加友好,可以避免出現白屏的情況。

4、Ajax是基于標準化并且廣泛使用的技術幾乎所有的主流瀏覽器都支持該技術,ye不需要單獨安裝插件。

5、Ajax可以使Web中的頁面和應用分離,便于分工合作。

六、Ajax缺點

1、對于移動設備不能很好的支持。

2、Ajax干掉了back按鈕,即對瀏覽器后退機制的破壞。

3、安全問題。比如:跨站點腳步攻擊、SQL注入攻擊和基于credentials的安全漏洞等。

4、對搜索引擎的支持比較弱。

5、破壞了程序的異常機制。至少從目前看來,像ajax.dll,ajaxpro.dll這些ajax框架是會破壞程序的異常機制的。

造成調試的困難。

七、使用原則

1、Ajax適用場景

表單驅動的交互

深層次的樹的導航

快速的用戶與用戶間的交流響應

類似投票、yes/no等無關痛癢的場景

對數據進行過濾和操縱相關數據的場景

普通的文本輸入提示和自動完成的場景

2、Ajax不適用場景

部分簡單的表單

搜索

基本的導航

替換大量的文本

對呈現的操縱

八、原生AJAX寫法

var XHR=null;

if (window.XMLHttpRequest) {

// 非IE內核

XHR = new XMLHttpRequest();

} else if (window.ActiveXObject) {

// IE內核,這里早期IE的版本寫法不同,具體可以查詢下

XHR = new ActiveXObject("Microsoft.XMLHTTP");

} else {

XHR = null;

}

if(XHR){

XHR.open("GET", "ajaxServer.action");

XHR.onreadystatechange = function () {

// readyState值說明

// 0,初始化,XHR對象已經創建,還未執行open

// 1,載入,已經調用open方法,但是還沒發送請求

// 2,載入完成,請求已經發送完成

// 3,交互,可以接收到部分數據

// status值說明

// 200:成功

// 404:沒有發現文件、查詢或URl

// 500:服務器產生內部錯誤

if (XHR.readyState == 4 && XHR.status == 200) {

// 這里可以對返回的內容做處理

// 一般會返回JSON或XML數據格式

console.log(XHR.responseText);

// 主動釋放,JS本身也會回收的

XHR = null;

}

};

XHR.send();

}

公眾號原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272808.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272808.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272808.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

gprs java_WISMO模塊GPRS上網設置的過程

WISMO模塊GPRS上網設置的過程一) AT指令設置部分(1) ATCGCLASS“B”置為“網絡WISMO模塊GPRS上網設置的過程一) AT指令設置部分(1) ATCGCLASS“B”置為“B”模式。(2) ATCGDCONT1,“IP”,“CMNET”設置APN。(3) ATCSQ 檢查信號 若返回10—31&#xff0c…

loadrunner性能測試步驟

性能測試過程分為4個階段:設計、構建、執行、分析/診斷/調節具體的工作流程如下圖 設計  >  構建  >  執行   >  分析/診斷/調節 收集要求    設置測試環境 基準測試    診斷瓶頸 設計測試策略  記錄測試腳本 性能測試     調…

Asp.Net生命周期的詳解

一.Asp.Net頁面生命周期的概念當我們在瀏覽器地址欄中輸入網址,回車查看頁面時,這時會向服務器端IIS)發送一個request請求,服務器就會判斷發送過來的請求頁面,當完全識別 TTP頁面處理程序類后,A…

java chain_java 8中 predicate chain的使用

java 8中 predicate chain的使用簡介Predicate是一個FunctionalInterface,代表的方法需要輸入一個參數,返回boolean類型。通常用在stream的filter中,表示是否滿足過濾條件。boolean test(T t);基本使用我們先看下在stream的filter中怎么使用P…

前段技術學習計劃

資料: 著作權歸作者所有。 商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 作者:陳禹魯 鏈接:http://www.zhihu.com/question/19809484/answer/35544452 來源:知乎 第一本,入門 《Head first HTML&…

指針的概念

在C語言中,內存單元的地址稱為指針,專門用來存放地址的變量,有時對地址,指針和指針變量不區分,統稱指針。(地址指針) 一般情況下,最前面的存儲類型通常會省略 指針在說明的同時&…

整理一些提高C#編程性能的技巧

1、使用StringBuilder代替使用string 連接符 ""說明:String類對象是不可變的(只讀),一旦創建該對象,就不能修改該對象的值。對象String對象的重新賦值,本質上是重新創建了一個String對象并將新的…

python爬知識星球付費數據_用python爬取知識星球

去年我們做過一個叫「學長問答」的社群活動,里面沉淀了大量有價值的互動信息,后來因為各種原因終止了。今天和涂騰聊起來,覺得這些信息就這么沉寂了太浪費。所以就試著用python爬取了知識星球的內容。這個過程又學習了一些新的知識&#xff0…

HTML學習(1)

1、縮寫和首字母縮寫<abbr><acronym> <abbr title"etcetera">etc.</abbr> <acronym title"World Wide Web">WWW</acronym> 2、塊引用&#xff08;短&#xff09; <p>A: <q>B</q>C</p> 顯示結…

常用的7個SQl優化技巧

作為程序員經常和數據庫打交道的時候還是非常頻繁的&#xff0c;掌握住一些Sql的優化技巧還是非常有必要的。下面列出一些常用的SQl優化技巧&#xff0c;感興趣的朋友可以了解一下。1、注意通配符中Like的使用以下寫法會造成全表的掃描&#xff0c;例如&#xff1a;select id,n…

toolbar java_Java ToolBar.layout方法代碼示例

import org.eclipse.swt.widgets.ToolBar; //導入方法依賴的package包/類protected ToolBar createToolbar() {final ToolBar t new ToolBar(composite, SWT.FLAT | SWT.LEFT | SWT.HORIZONTAL | SWT.WRAP);final GridData d new GridData(SWT.FILL, SWT.TOP, false, false);…

Visual Studio常用的快捷鍵整理

微軟的開發工具Visual Studio作為DoNet開發者來說是必備神器&#xff0c;該開發工具內置了很多的開發快捷鍵&#xff0c;熟悉了這些開發快捷鍵&#xff0c;對于程序員來說事半功倍&#xff0c;所以在這里整理一下&#xff0c;版本是vs2012以上&#xff0c;目前小編列出了自己覺…

win7旗艦版6l打印機咋安驅動_在w7旗艦版上怎么安裝HPlaserjet6L打印機?

您好&#xff0c;感謝您選擇惠普產品。首先6L產品只有并口線&#xff0c;但是現在win 7 電腦基本都沒有并口&#xff0c;有可能是您使用了轉接usb設備&#xff0c;但是產品在出廠的時候會對產品作測試&#xff0c;測試的結果是不建議使用轉接設備或者是延長設備&#xff0c;以免…

收集一些工作中常用的經典SQL語句

作為一枚程序員來說和數據庫打交道是不可避免的&#xff0c;現收集一下工作中常用的SQL語句&#xff0c;希望能給大家帶來一些幫助&#xff0c;當然可能不全面&#xff0c;歡迎補充&#xff01;1、執行插入語句&#xff0c;獲取自動生成的遞增的ID值INSERT INTO SysRole (RoleN…

ascii modbus vc源碼_MODBUS ASCII及MODBUS RTU通訊

代碼片段和文件信息using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO.Ports;//串口using…

Asp.Net操作Cookie總結

一、什么是Cookie&#xff1f;Cookie是存儲在客戶端文件系統的文本文件或客戶端瀏覽器對話的內存中的少量數據。它主要用來跟蹤數據設置&#xff0c;例如&#xff1a;當我們要訪問一個網站網頁的時候&#xff0c;用戶請求網頁時&#xff0c;應用程序可能會首先檢查此用戶是否已…

java GUI怎么輸入_在Swing中創建Java GUI以進行表單輸入

好吧,我已經瀏覽了整個互聯網,但卻未能找到這個問題的答案,所以也許有人可以提供一些見解.我正在開發一個相對簡單的Java應用程序,它將取代目前用于系統訪問請求的Word文檔.它旨在允許表單輸入新的員工雇用信息 – 名稱,所需的訪問權限等.所以這是我的問題.嘗試使用所有文本字段…

Net中Session的用法

一、什么是Session&#xff1f;簡單來說&#xff0c;就是用戶與網站服務器建立的一個連接&#xff0c;服務器分配給一個編號。當一臺WWW服務器運行時&#xff0c;可能有若干用戶正在瀏覽運行在這臺服務器上的網站。當用戶首次與這臺WWW服務器創建連接的時候&#xff0c;它就和這…

關于Json的總結

一、什么是Json&#xff1f;JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。它是基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999的一個子集。 JS…

java 整數溢出檢測,Java如何處理整數下溢和溢出以及如何檢查它?

How does Java handle integer underflows and overflows?Leading on from that, how would you check/test that this is occurring?解決方案If it overflows, it goes back to the minimum value and continues from there. If it underflows, it goes back to the maximum…