日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AJAX异步交互

發布時間:2023/12/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AJAX异步交互 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

什么是AJAX

AJAX(Asynchronous Javascript And XML)翻譯成中文就是“異步Javascript和XML”。即使用Javascript語言與服務器進行異步交互,傳輸的數據為XML(當然,傳輸的數據不只是XML)。

AJAX還有一個最大的特點就是,當服務器響應時,不用刷新整個瀏覽器頁面,而是可以局部刷新。這一特點給用戶的感受是在不知不覺中完成請求和響應過程,當請求發出后,瀏覽器還可以進行其他操作,無需等待服務器的響應

同步交互與異步交互

同步交互:客戶端發出一個請求后,需要等待服務器響應結束后,才能發出第二個請求;

異步交互:客戶端發出一個請求后,無需等待服務器響應結束,就可以發出第二個請求。

AJAX的優缺點

優點:

AJAX使用Javascript技術向服務器發送異步請求;

AJAX無須刷新整個頁面;

因為服務器響應內容不再是整個頁面,而是頁面中的局部,所以AJAX性能高;

缺點:

AJAX并不適合所有場景,很多時候還是要使用同步交互;

AJAX雖然提高了用戶體驗,但無形中向服務器發送的請求次數增多了,導致服務器壓力增大;

因為AJAX是在瀏覽器中使用Javascript技術完成的,所以還需要處理瀏覽器兼容性問題

AJAX核心(XMLHttpRequest

其實AJAX就是在Javascript中多添加了一個對象:XMLHttpRequest對象。所有的異步交互都是使用XMLHttpRequest對象完成的。也就是說,我們只需要學習一個Javascript的新對象即可。

注意,各個瀏覽器對XMLHttpRequest的支持也是不同的!大多數瀏覽器都支持DOM2規范,都可以使用:var xmlHttp = new XMLHttpRequest()來創建對象;但IE有所不同,IE5.5以及更早版本需要:var xmlHttp = new ActiveXObject(“Microsoft.XMLHTTP”)來創建對象;而IE6中需要:var xmlHttp = new ActiveXObject(“Msmxl2.XMLHTTP”)來創建對象;而IE7以及更新版本也支持DOM2規范。

編寫AJAX步驟

1,為了處理瀏覽器兼容問題,給出下面方法來創建XMLHttpRequest對象:

function createXMLHttpRequest() {var xmlHttp;// 適用于大多數瀏覽器,以及IE7和IE更高版本try{xmlHttp = new XMLHttpRequest();} catch (e) {// 適用于IE6try {xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {// 適用于IE5.5,以及IE更早版本try{xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (e){}}} return xmlHttp; }

?

2,打開與服務器的連接:得到XMLHttpRequest對象后,就可以調用該對象的open()方法打開與服務器的連接了。open()方法的參數如下:

open(method, url, async):

method:請求方式,通常為GET或POST;

url:請求的服務器地址,例如:/ajaxdemo1/AServlet,若為GET請求,還可以在URL后追加參數;

async:這個參數可以不給,默認值為true,表示異步請求

3,發送請求:當使用open打開連接后,就可以調用XMLHttpRequest對象的send()方法發送請求了。send()方法的參數為POST請求參數,即對應HTTP協議的請求體內容,若是GET請求,需要在URL后連接參數。

注意:若沒有參數,需要給出null為參數!若不給出null為參數,可能會導致FireFox瀏覽器不能正常發送請求!如:xmlHttp.send(null);

4,接受服務器響應:

當請求發送出去后,服務器端Servlet就開始執行了,但服務器端的響應還沒有接收到。接下來我們來接收服務器的響應。

XMLHttpRequest對象有一個onreadystatechange事件,它會在XMLHttpRequest對象的狀態發生變化時被調用。下面介紹一下XMLHttpRequest對象的5種狀態:

0:初始化未完成狀態,只是創建了XMLHttpRequest對象,還未調用open()方法;

1:請求已開始,open()方法已調用,但還沒調用send()方法;

2:請求發送完成狀態,send()方法已調用;

3:開始讀取服務器響應;

4:讀取服務器響應結束。

onreadystatechange事件會在狀態為1、2、3、4時引發。

下面代碼會被執行四次!對應XMLHttpRequest的四種狀態!

?????? xmlHttp.onreadystatechange = function() {

?????????? alert('hello');

?????? };

?

但通常我們只關心最后一種狀態,即讀取服務器響應結束時,客戶端才會做出改變。我們可以通過XMLHttpRequest對象的readyState屬性來得到XMLHttpRequest對象的狀態。

?????? xmlHttp.onreadystatechange = function() {

?????????? if(xmlHttp.readyState == 4) {

????????????? alert('hello');??

?????????? }

?????? };

其實我們還要關心服務器響應的狀態碼是否為200,其服務器響應為404,或500,那么就表示請求失敗了。

我們可以通過XMLHttpRequest對象的status屬性得到服務器的狀態碼。

最后,我們還需要獲取到服務器響應的內容,可以通過XMLHttpRequest對象的responseText得到服務器響應內容。

?????? xmlHttp.onreadystatechange = function() {

?????????? if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {

????????????? alert(xmlHttp.responseText);???

?????????? }

?????? };

?

下面是一個例子:

--------------------------------------------這是一個Servlet文件
public
class AServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)//throws ServletException, IOException {System.out.println("Hello AJAX!");response.getWriter().print("Hello AJAX!!!");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("UTF-8");String username = request.getParameter("username");//獲取請求參數System.out.println("(POST:) Hello AJAX!" + username);response.getWriter().print("(POST:) Hello AJAX!!!" + username);} }

?

----------------------------------------------------這是一個jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>My JSP 'ajax1.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> <script type="text/javascript"> // 創建異步對象 function createXMLHttpRequest() {try {return new XMLHttpRequest();//大多數瀏覽器} catch (e) {try {return ActvieXObject("Msxml2.XMLHTTP");//IE6.0} catch (e) {try {return ActvieXObject("Microsoft.XMLHTTP");//IE5.5及更早版本 } catch (e) {alert("哥們兒,您用的是什么瀏覽器啊?");throw e;}}} }window.onload = function() {//文檔加載完畢后執行var btn = document.getElementById("btn");btn.onclick = function() {//給按鈕的點擊事件注冊監聽/*ajax四步操作,得到服務器的響應把響應結果顯示到h1元素中*//*1. 得到異步對象 */var xmlHttp = createXMLHttpRequest();/*2. 打開與服務器的連接* 指定請求方式* 指定請求的URL* 指定是否為異步請求*//************修改open方法,指定請求方式為POST**************/xmlHttp.open("POST", "<c:url value='/AServlet'/>", true);/************設置請求頭:Content-Type,如果請求方式為get的話,則不必要添加請求頭************/xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");/*3. 發送請求*//**********發送時指定請求體***********/xmlHttp.send("username=張三&password=123");//GET請求沒有請求體,但也要給出null,不然FireFox可能會不能發送!/*4. 給異步對象的onreadystatechange事件注冊監聽器*/xmlHttp.onreadystatechange = function() {//當xmlHttp的狀態發生變化時執行// 雙重判斷:xmlHttp的狀態為4(服務器響應結束),以及服務器響應的狀態碼為200(響應成功)if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {// 獲取服務器的響應結束var text = xmlHttp.responseText;// 獲取h1元素var h1 = document.getElementById("h1");h1.innerHTML = text;}};}; }; </script></head><body> <button id="btn">點擊這里</button> <h1 id="h1"></h1></body> </html>

?

轉載于:https://www.cnblogs.com/QianYue111/p/9813774.html

總結

以上是生活随笔為你收集整理的AJAX异步交互的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色的网站免费观看 | 国产精品自拍视频一区 | 欧美xxxxhd | 在线观看av一区二区 | 97精品国产97久久久久久春色 | 黄色一级片免费 | 日韩污视频在线观看 | 欧美日本一本 | 欧美黄色a级大片 | 我想看毛片 | 偷拍亚洲视频 | 女色综合 | 欧美小视频在线 | 亚洲色图另类小说 | 日韩亚洲欧美在线观看 | 丁香花在线影院观看在线播放 | 国产不卡a | 电影《走路上学》免费 | 日韩av综合 | 天天干,天天爽 | 精品在线小视频 | 欧美国产在线一区 | 狠狠躁日日躁 | 国产精品天美传媒沈樵 | 黑人乱码一区二区三区av | 亚洲av无码久久忘忧草 | 日本女人黄色 | 在线日韩视频 | 久久久久噜噜噜亚洲熟女综合 | 免费爱爱视频 | av在线超碰 | 亚洲永久视频 | 久久99国产精品 | 国产91视频播放 | 日韩特黄 | 国产精品久久久久蜜臀 | 在线视频网站 | 无套内谢的新婚少妇国语播放 | 黄色三级带 | 日韩一级片免费看 | 激情无遮挡 | 欧美日韩日本国产 | 亚洲精华国产精华精华液网站 | 麻豆md0077饥渴少妇 | 国产一区伦理 | www.毛片com | 女同性做爰全过程 | 亚洲欧美另类激情 | 亚洲区欧美 | 性色福利| 一级片久久| 麻豆av在线免费观看 | 久久中文免费视频 | 夜夜爽夜夜叫夜夜高潮漏水 | 国产在线高潮 | 久草a视频 | 播色屋 | 亚洲精品视频播放 | 欧美成人天堂 | 我们的2018在线观看免费高清 | 天天躁日日躁狠狠躁伊人 | 一本大道久久a久久综合婷婷 | 天天躁日日躁aaaaxxxx | 最近免费中文字幕大全免费版视频 | 东北少妇不戴套对白第一次 | 看毛片网站 | 国产黄色大片免费看 | 第九色| 男人天堂亚洲 | 亚洲一级片免费看 | 国产黄色av网站 | av免费播放网站 | 日本中文在线观看 | 国内精品久久久久久久 | 亚洲免费一区视频 | 极品粉嫩小仙女高潮喷水久久 | 国产美女一区 | 女王脚交玉足榨精调教 | 乱日视频 | 最新黄色av网址 | 成人久久视频 | 狠狠综合久久av一区二区 | 欧美亚洲日本一区 | 亚洲欧美日韩综合在线 | 黄色香蕉视频 | 男人午夜免费视频 | 白嫩少妇激情无码 | 国产精品--色哟哟 | 欧美一级久久 | 亚洲乱熟女一区二区三区小说 | 韩日午夜在线资源一区二区 | 性感美女av在线 | 国产精品一区二区人妻喷水 | 三级av在线| 台湾三级伦理片 | 蜜桃tv一区二区三区 | www.在线看| 火影黄动漫免费网站 | 国产永久毛片 |