亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

JavaScript中淺講ajax圖文詳解

2024-09-01 08:33:48
字體:
來源:轉載
供稿:網友

1.ajax入門案例

javascript,ajax

1.1 搭建Web環境

ajax對于各位來說,應該都不陌生,正因為ajax的產生,導致前臺頁面和服務器之間的數據傳輸變得非常容易,同時還可以實現頁面的局部刷新。通過在后臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。

對于JavaWeb項目而言,ajax主要用于瀏覽器和服務器之間數據的傳輸。

如果是單單地堆砌知識點,會顯得比較無聊,那么根據慣例,我先不繼續介紹ajax,而是來寫一個案例吧。

打開eclipse,新建一個web項目。

如果對JavaWeb項目還不太清楚的,可以去參考我之前的文章。我

目錄結構:

javascript,ajax

<?xml version="1.0" encoding="UTF-8"?><web-app></web-app>

這樣就好了,web項目搭建完畢。

暫時不要往下寫,先確保我們到目前為止的工作是沒問題的。

驗證方法就是在WebContent目錄下,新建一個空的jsp頁面,里面隨便寫的什么。

javascript,ajax

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body style="padding:100px"><h1>Hello World</h1></body></html>

啟動tomcat,把這個項目跑起來。

javascript,ajax

沒報錯。

打開瀏覽器,輸入訪問地址,我這里的tomcat端口號是80 ,默認可以不寫。

http://localhost/ajax/index.jsp

javascript,ajax

來了,沒問題。

好的,這說明我們的web項目搭建沒有問題。

1.2 編寫服務器程序Servlet

javascript,ajax

個人感悟,精粹整理

web環境已經搭好,接下來,讓我們來編寫一個簡單的Servlet程序,tomcat是一個服務器,現在它里面有一個名字叫做ajax的web項目,那么這些Servlet就好比是web項目里面的一個個小功能。

你的電腦里面有QQ,Word,殺毒軟件等程序。一個web項目,也就是一個應用程序。本質上和你電腦上的QQ概念是一樣一樣的。

你打開QQ,可以聊天,語音,視頻。這些小功能,類比到JavaWeb項目,就是一個個Servlet。

很多人都知道框架,比如大名鼎鼎的SpringMVC,里面有一個個的Controller,其實這些Controller到底是什么玩意,不要怕,他們其實就是對Servlet做了一個封裝,本質上還是一樣一樣的。

我們寫一個Servlet,都需要去web.xml里面注冊一下,否則就用不了。你安裝一個QQ,注冊表里面是不是肯定也需要注冊一下啊,這不還是一樣一樣的嗎?

好了,閑話不多說。我們來寫一個小功能,也就是一個Servlet。

繼承HttpServlet,同時改寫doGet方法

import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("111");}}

里面我們先什么也不寫。

接下來,我們要在web.xml里面把這個Servlet注冊一下。

<?xml version="1.0" encoding="UTF-8"?><web-app><servlet><!-- 這里是servlet的名字 --><servlet-name>MyServlet</servlet-name><servlet-class>MyServlet</servlet-class><!-- 這里寫servlet類在的包路徑 --></servlet><servlet-mapping><!-- 這里是地址映射 --><servlet-name>MyServlet</servlet-name><!-- 這里寫servlet映射地址 --><url-pattern>/MyServlet</url-pattern></servlet-mapping></web-app>

OK,Servlet注冊完畢,我們先來訪問一下這個功能。

重啟tomcat。

訪問:http://localhost/ajax/MyServlet

javascript,ajax

1.3 前臺頁面設計

服務器小程序已經差不多了,現在我們為了和服務器進行交互,就需要編寫前臺頁面。這個頁面也就是給用戶看的。換言之,用戶只能通過前臺頁面來訪問我們的Servlet。

我們來寫一個小案例,在頁面上發送一句話到服務器,然后服務器給出一個回應就行了。

就是這么一個簡單的案例,主要用來熟悉一下流程。

為了簡單起見,我就不自己調css樣式了,直接用bootstrap吧。

引入bootstrap的核心css文件。?

javascript,ajax?

然后,修改index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap/css/bootstrap.min.css"><title>Insert title here</title><style type="text/css">.container {margin-top:100px;}</style><script>window.onload = function(){var btn = document.getElementById("submit");btn.onclick = function(){alert();}};</script></head><body><div class="container"><div class="row"><div class="col-lg-8"><div class="input-group"><input type="text" class="form-control"><span class="input-group-btn"><button id="submit" class="btn btn-default" type="button">提交</button></span></div></div></div></div></body></html>

頁面效果:

javascript,ajax

1.4 基于get方式的數據請求

當我們點擊提交按鈕,就alert()一下,如果成功的話,那么說明點擊事件沒有問題。然后,繼續往下寫代碼。

如果是以往,我們都是通過form表單來進行提交的,可是這樣的話,就會有一個問題,就是頁面會刷新,而且代碼也相對比較難懂。

自從ajax出來了之后,這種情況得到了巨大的改善,局部刷新技術在當時來看,還是非常不錯的。

我先把實現代碼給出:

btn.onclick = function(){var xhr = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");xhr.open("get","MyServlet?message="+document.getElementsByTagName("input")[0].value,true);xhr.send();xhr.onreadystatechange = function(){if(xhr.readyState==4 && xhr.status==200){alert(xhr.responseText);}};}

同時修改一下MyServlet

@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String msg = req.getParameter("message");System.out.println(msg);}

重啟 tomcat ,訪問index.jsp頁面。

現在的瀏覽器一般都有調試功能,按一下F12,調試界面就出來了。然后,找到一個network,以谷歌瀏覽器為例

javascript,ajax

network視圖會把所有的數據交互顯示出來,包括引入的 js , css文件,還有各種請求和回應,都會在這里顯示出來。

比如,現在我刷新一下頁面

javascript,ajax

我這么一刷新,首先服務器接收到的是這么一個 URL: http://localhost/ajax/index.jsp

這就是一個請求,服務器收到這個請求后,返回給我 index.jsp頁面和bootstrap.min.css這個文件。

因為我在index.jsp的確引入過bootstrap.min.css,所以他也就一起加載進來了。

javascript,ajax

現在,我輸入一句話,點擊提交,看看會發生什么?

javascript,ajax

我們把input框里面的內容提交到服務器程序 MyServlet

控制臺已經接受到了,這里比較幸運,沒有遇到中文亂碼的問題,那么先不管亂碼了。

javascript,ajax

因為MyServlet中沒有返回什么東西,所以alert出來的是空。

好的,那我們給瀏覽器也返回一句話吧。

@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String msg = req.getParameter("message");System.out.println(msg);resp.setContentType("text/html;charset=utf-8");PrintWriter out=resp.getWriter();out.println("你好,這是服務器返回的信息!");out.flush();out.close();}

再次點擊提交按鈕

javascript,ajax

OK了。

?接下來,看一下請求的具體信息

javascript,ajax

在比對一下js代碼,就一目了然了。

btn.onclick = function(){var xhr = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");xhr.open("get","MyServlet?message="+document.getElementsByTagName("input")[0].value,true);xhr.send();xhr.onreadystatechange = function(){if(xhr.readyState==4 && xhr.status==200){alert(xhr.responseText);}};}

readyState:

0: 請求未初始化

1: 服務器連接已建立,還沒發送

2: 請求已接收

3: 請求處理中

4: 請求已完成,且響應已就緒

當 readyState 等于 4 且狀態為 200 時,表示響應已就緒.

請求方式是get,并且只有當返回的狀態碼為200的時候,才會打印出responseText,這個就是對應的

?out.println("你好,這是服務器返回的信息!");

這句話。

1.5 基于post方式的數據請求

get方法會在URL地址欄里顯示你提交所帶的值,post方法不會。所以,相對來說,post方法比較安全。

post方法在流程上和get方式差不多,我就直接上代碼了:

window.onload = function(){var btn = document.getElementById("submit");btn.onclick = function(){var xhr = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");xhr.open("post","MyServlet",true);xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");var postData = {message : document.getElementsByTagName("input")[0].value};var postDataStr = (function(obj){ // 轉成post需要的字符串.var str = "";for(var prop in obj){str += prop + "=" + obj[prop] + "&"}return str;})(postData);alert(postDataStr);xhr.send(postDataStr);xhr.onreadystatechange = function(){if(xhr.readyState==4 && xhr.status==200){alert(xhr.responseText);}};}};

MyServlet.java

import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("UTF-8");String msg = req.getParameter("message");System.out.println(msg);resp.setContentType("text/html;charset=utf-8");PrintWriter out=resp.getWriter();out.println("你好,這是服務器返回的信息!");out.flush();out.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}}

以上所述是小編給大家介紹的JavaScript中淺講ajax圖文詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美天天综合色影久久精品| 91精品国产色综合久久不卡98| 日韩在线观看免费全集电视剧网站| 18性欧美xxxⅹ性满足| 亚洲成年人影院在线| 欧美久久精品午夜青青大伊人| 成人免费观看49www在线观看| 国产69精品久久久久9999| 精品国偷自产在线| 久久久久北条麻妃免费看| 精品久久久久久久大神国产| 91在线观看免费| 在线看欧美日韩| 日韩美女视频免费看| 国产69精品久久久久9| 日韩美女视频免费看| 国产日韩精品综合网站| 亚洲精品一区中文字幕乱码| 国产美女主播一区| 国产日产欧美精品| 成人中文字幕+乱码+中文字幕| 欧美日韩综合视频| 欧美大秀在线观看| 国产精品夜色7777狼人| 久久伊人精品天天| 欧美资源在线观看| 中文日韩在线观看| 美女福利精品视频| 亚洲精品国产精品乱码不99按摩| 伊人激情综合网| 精品国产一区二区三区久久狼黑人| 国内精品模特av私拍在线观看| 欧美裸体xxxx极品少妇| 欧美日本啪啪无遮挡网站| 在线成人中文字幕| 国产精品日韩精品| 91精品国产综合久久香蕉的用户体验| 欧美日韩中国免费专区在线看| 成人网欧美在线视频| 日本成人黄色片| 黄色精品在线看| 久久精品国产综合| 亚洲电影第1页| 国产精品欧美在线| 久久久91精品| 亚洲人成毛片在线播放| 国产精品成人一区二区三区吃奶| 日韩在线观看视频免费| 欧美成人精品三级在线观看| 久久久久国产精品免费| 欧美精品videosex极品1| 国产精品免费福利| 人妖精品videosex性欧美| 亚洲免费人成在线视频观看| 91精品久久久久久久久青青| 国产精品久久999| 欧美日韩在线观看视频小说| 久久躁狠狠躁夜夜爽| 色一情一乱一区二区| 久热国产精品视频| 精品久久国产精品| 欧美孕妇性xx| 欧美日韩一二三四五区| 久久99视频免费| 热久久美女精品天天吊色| 尤物yw午夜国产精品视频| 裸体女人亚洲精品一区| 亚洲一区二区三区777| 欧美高清在线观看| 亚洲精品久久久久中文字幕欢迎你| 日韩av影片在线观看| 精品久久久久久久久久久| 亚洲成人国产精品| 亚洲欧美成人在线| 欧美激情视频在线观看| 91国偷自产一区二区三区的观看方式| 成人羞羞国产免费| 成人激情视频在线播放| 欧美最猛性xxxxx(亚洲精品)| 97婷婷涩涩精品一区| 久久人人爽亚洲精品天堂| 国产成人av在线播放| 国产成人精品在线| 欧美在线观看网站| 亚洲国产欧美一区二区三区久久| 国产一区二区三区日韩欧美| 亚洲欧美国产精品| 欧美精品videossex性护士| 成人亚洲欧美一区二区三区| 国产精品扒开腿做爽爽爽男男| 国产视频精品va久久久久久| 亚洲成人精品视频在线观看| 亚洲精品国产成人| 国产精品一二三在线| 欧美电影免费播放| 欧美大片网站在线观看| 91精品国产综合久久香蕉最新版| 亚洲图片欧美日产| 国产97在线播放| 国产午夜一区二区| 久久天天躁狠狠躁夜夜av| 欧美在线视频一二三| 4p变态网欧美系列| 另类少妇人与禽zozz0性伦| 日韩欧中文字幕| 曰本色欧美视频在线| 久久影视电视剧免费网站清宫辞电视| 日韩动漫免费观看电视剧高清| 久久91超碰青草是什么| 在线日韩av观看| 精品免费在线视频| 久久综合久久88| 国产精品久久久久久久电影| 亚洲精品久久久久久久久久久| 亚洲精品久久久久| 青青久久av北条麻妃黑人| 国产精品视频一区国模私拍| 亚洲欧美综合另类中字| 国产一区二区三区在线免费观看| 91精品国产高清久久久久久| 少妇高潮久久77777| 97视频免费在线看| 国产精品第一视频| 日韩av观看网址| 日韩av在线电影网| 精品一区二区亚洲| 97精品视频在线播放| 亚洲国产欧美一区二区丝袜黑人| 欧美性色xo影院| 欧美日韩在线影院| 久久精品亚洲热| 欧美激情欧美狂野欧美精品| 中文字幕亚洲自拍| 日韩国产精品视频| 日韩av免费观影| 欧美一级视频一区二区| 欧美精品video| 日韩视频在线观看免费| 亚洲电影免费观看高清完整版| 欧美一区二区三区四区在线| 欧美日韩国产区| 国产主播喷水一区二区| 欧美在线视频一区二区| 国产情人节一区| 精品呦交小u女在线| 亚洲一区制服诱惑| 成人国产精品免费视频| 美女少妇精品视频| 亚洲精品动漫100p| 亚洲视频在线视频| 久久久精品美女| 中文字幕欧美日韩在线| 欧美日韩成人在线视频| 国产女精品视频网站免费| 欧美日韩一区二区免费在线观看| 亚洲一区二区三区乱码aⅴ| 欧美日韩一区二区在线播放| 疯狂做受xxxx欧美肥白少妇| 亚洲亚裔videos黑人hd| 成人妇女淫片aaaa视频| 亚洲老头同性xxxxx| 亚洲片国产一区一级在线观看| 欧洲午夜精品久久久| 中文字幕国产日韩|