【精選】Ajax技術知識點合集

Ajax技術詳解

Ajax簡介

在這里插入圖片描述

Ajax 即“Asynchronous Javascript And XML”(異步 JavaScript 和 XML),是指一種創建 交互式、快速動態應用的網頁開發技術,無需重新加載整個網頁的情況下,能夠更新頁面局 部數據的技術。通過在后臺與服務器進行少量數據交換,Ajax 可以使頁面實現異步更新。這意味著可以在不重新加載整個頁面的情況下,對頁面的某部分進行更新。

Ajax 的使用

  • Ajax 的運行原理

在這里插入圖片描述

  • XMLHttpRequest 對象

? XMLHttpRequest 是瀏覽器接口對象,該對象的 API 可被 JavaScript、VBScript 以及其它web 瀏覽器內嵌的腳本語言調用,通過 HTTP 協議在瀏覽器和 web 服務器之間收發 XML 或其它數據。XMLHttpRequest 可以與服務器實現異步交互,而無需讓整個頁面刷新,因此成為 Ajax 編程的核心對象。

  • Ajax 的使用步驟

創建 XMLHttpRequest 對象

var xhr = new XMLHttpRequest();

給定請求方式以及請求地址

xhr.open("get","http://www.example.com");

發送請求

xhr.send()

獲取服務器端給客戶端的響應數據

xhr.onreadystatechange = function(){//0:請求未初始化//1:服務器連接已建立//2:請求已接收//3:請求處理中//4:請求已完成,且響應已就緒if(xhr.readyState == 4 && xhr.status == 200){
document.getElementById("span").innerHTML=xhr.responseText;alert(xhr.responseText);}
}

Ajax請求

Ajax請求

請求的步驟:

正如您在上面的示例中所看到的,XMLHttpRequest對象起著重要作用

  1. 用戶從 UI 發送請求,JavaScript 中調用 XMLHttpRequest對象。
  2. HTTP請求由XMLHttpRequest 對象發送到服務器。
  3. 服務器使用 JSP,PHP,Servlet,ASP.net 等與數據庫交互。
  4. 檢索數據。
  5. 服務器將 XML 數據或 JSON數據發送到 XMLHttpRequest 回調函數。
  6. HTML和 CSS 數據顯示在瀏覽器上。
方法描述
open(method,url,async)規定請求的類型、URL 以及是否異步處理請求。method:請求的類型;GET 或 POST url:文件在服務器上的位置 async:true(異步)或 false(同步)
send(string)將請求發送到服務器。string:僅用于 POST 請求

Ajax同步或異步

Async=true

當使用 async=true時,請規定在響應處于onreadystatechange事件中的就緒狀態時執行的函數

xhr.onreadystatechange = function(){
if (xhr.readyState === 4 && xhr.status === 200) {document.getElementById("view").innerHTML = xhr.responseText;}        
}
xmlhttp.open("GET","get.txt",true);
xmlhttp.send();

Async = false

我們不推薦使用 async=false,但是對于一些小型的請求,也是可以的。JavaScript 會等到服務器響應就緒才繼續執行。如果服務器繁忙或緩慢,應用程序會掛起或停止。

xmlhttp.open("GET","get.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Ajax服務器響應

狀態行 xhr.status狀態碼,如200,304,404等;

響應主體 xhr.responseText與xhr.responseXML都表示響應主體。

如需獲得來自服務器的響應,請使用 XMLHttpRequest 對象的responseText或responseXML屬性。

屬性描述
responseText獲得字符串形式的響應數據。
responseXML獲得 XML 形式的響應數據。
var xhr = new XMLHttpRequest();xhr.open("GET", "http://localhost:8080/xmlTest.xml", true);
xhr.send();xhr.onreadystatechange = function(){
if (xhr.readyState === 4 && xhr.status === 200) {//解析返回的xml文件xmlDoc = xhr.responseXML;txt = "";x = xmlDoc.getElementsByTagName("ARTIST");for (i=0;i<x.length;i++) {txt = txt + x[i].childNodes[0].nodeValue + "<br>";}document.getElementById("view").innerHTML = txt;}
}

JSON詳解

在這里插入圖片描述

  • JSON簡介

JSON(JavaScript Object Notation) 是一種基于字符串的輕量級的數據交換格式。易于閱讀和編寫,同時也易于機器解析和生成。JSON 是 JavaScript 數據類型的子集。

  • 為什么要使用 JSON

在 JSON 未出現之前在 Ajax 中對于數據傳遞方式,會使用 XML 作為主要數據格式來傳輸數據。直到 JSON 出現后逐漸放棄使用 XML 作為數據傳輸格式。JSON 比 XML 更小、更快、更易解析。

  • JSON 格式的特征
  • JSON的語法規則

JSON 是按照特定的語法規則所生成的字符串結構。

大括號表示 JSON 的字符串對象。{ } 屬性和值用冒號分割。{“屬性”:“value”} 屬性和屬性之間用逗號分割。{“屬性”:“value”,“屬性”:“value”,…} 中括號表示數組。[{“屬性”:“value”…},{“屬性”:“value”…}]

JSON 字符串對象:

{"userid":1,"username":"admin","sex":"male"}

數組:

[{"userid":1,"username":"admin"},{"userid":2,"username":"zhangsan"}]
  • JOSN的數據類型
  1. string:字符串,必須要用雙引號引起來。
  2. number:數值,與 JavaScript 的 number 一致,
  3. object:JavaScript 的對象形式,{ key:value }表示方式,可嵌套。
  4. array:數組,JavaScript 的 Array 表示方式[ value ],可嵌套。
  5. true/false:布爾類型,JavaScript 的 boolean 類型。
  6. null:空值,JavaScript 的 null。

和XML的比較
可讀性

JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規范的標簽形式,很難分出勝負。

可擴展性

XML天生有很好的擴展性,JSON當然也有,沒有什么是XML可以擴展而JSON卻不能擴展的。不過JSON在Javascript主場作戰,可以存儲Javascript復合對象,有著xml不可比擬的優勢。

編碼難度

XML有豐富的編碼工具,比如Dom4j、Dom、SAX等,JSON也有提供的工具。無工具的情況下,相信熟練的開發人員一樣能很快的寫出想要的xml文檔和JSON字符串,不過,xml文檔要多很多結構上的字符。

JACKSON 的使用

? 在 JDK 中并沒有內置操作 JSON 格式數據的 API,因此使用處理 JSON 格式的數據需要借 助第三方類庫。幾個常用的 JSON 解析類庫:

  1. Gson: 谷歌開發的 JSON 庫,功能十分全面。
  2. FastJson: 阿里巴巴開發的 JSON 庫,性能十分優秀。
  3. Jackson: 社區十分活躍且更新速度很快。被稱為“最好的 Json 解析器”

Jackson 簡介

Jackson 是一種解析 JSON 格式數據的 API,也是最流行,速度最快的 JSON API,最新版本是2.13.3,有3個jar包需要下載:

  1. jackson-core-2.13.3.jar(核心jar包)
  2. jackson-annotations-2.13.3.jar(提供Json注解支持)
  3. jackson-databind-2.13.3.jar(數據綁定,依賴于前兩個包)

在項目中引入Jackson

image-20220621141708477

序列化

**使用Jackson把java對象轉換成Json數據。**首先,創建TestBean.java

public class TestBean {//idprivate String id;//姓名private String name;//嵌套對象private List<Element> elements;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Elements getElements() {return elements;}public void setElements(Elements elements) {this.elements = elements;}
}}

再創建Element.java

public class Element {//年齡private Integer age;//呢稱private String ename;public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}
}
把Java對象轉成Json
Element element = new Element();
element.setAge(23);
element.setEName("java");
ObjectMapper objectMapper = new ObjectMapper();
String elementStr = objectMapper.writeValueAsString(element);
System.out.println(elementStr);

輸出結果如下

{"age":23,"elName":"java"}

反序列化

把Json轉成Java對象
String str = "{\"id\":1,\"name\":\"zhangsan\",\"elements\":[{\"age\":22,\"elName\":\"xiaozhang\"},{\"age\":26,\"elName\":\"xiaosan\"}]}";
ObjectMapper objectMapper = new ObjectMapper();
TestBean testBean = objectMapper.readValue(str, TestBean.class);
System.out.println(testBean.toString());

輸出結果如下:

TestBean(id=1, name=haha, elements=[Element(age=22, elName=xiaozhang), Element(age=26, elName=xiaosan)])

常用注解

  1. 將這個注解加載類上,不存在的字段將被忽略。

    @JsonIgnoreProperties(ignoreUnknown = true)
    
  2. 指定忽略字段

    @JsonIgnoreProperties({ “password”, “secretKey” })
    
  3. 標在字段上,將忽略此字段

    @JsonIgnore
    
  4. 標在時間字段上使用指定規則格式化(默認轉化成時間戳)

    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    
  5. 是否參與序列化

    JsonInclude.Include.NON_EMPTY:屬性為空或者null都不參與序列化

    JsonInclude.Include.NON_NULL:屬性為null不參與序列化

    @JsonInclude(參數)
    
  6. 標在字段上,指定序列化后的字段名

    @JsonProperty("firstName")
    
  7. 自定義某些類型字段的序列化與反序列化規則

    @JsonDeserialize(using= T extends JsonDeserializer.class)
    @JsonSerialize(using= T extends JsonSerializer.class)
    

Jquery 的 Ajax 使用

在這里插入圖片描述

在 JQuery 中提供了對 Ajax 的封裝,讓我們在使用 Ajax 技術時變得更加容易。在 JQuery 中提供了很多的基于 Ajax 發送異步請求的方法,如:$.ajax()$.get()$.post()$.getJSON()

  • $.ajax()在異步請求中提交數據

$.ajax()方法中通過 data 屬性來存放提交的數據,支持 JSON 格式的數據

1,提交普通格式數據

在 data 屬性中我們可以通過兩種方式來指定需要提交的數據。一種是通過 name=value&name=value 的結構。另一種是通過 JavaScript 對象來指定提交數據。無論使用哪種方式在Servlet中都是通過request.getParameter方法根據name獲取value的。

通過 JavaScript 對象指定提交數據

data:{userid:100,username:"zhangsan"
}

2,提交 JSON 格式數據

$.ajax()中提交 JSON 格式的數據需要使用 post 方式提交,通過 JSON.stringify()函數將 JavaScript 對象轉換成 JSON 格式的字符串。在 Servlet 中通過字符輸入獲取提交的 JSON 格式的數據。

data:JSON.stringify({name:value,name:value......})

在 Servlet 中通過 req.getReader().readLine()來獲取提交的數據。

  • $.ajax()處理響應中的 JSON 格式數據

$.ajax()方法會根據 dataType 屬性中的值自動對響應的數據做類型處理。如果響應的是 一個 JSON 格式的數據,那么 dataType 的值為“JSON”,在回調函數中我們得到的直接就是 JSON 字符串轉換完的 JavaScript 對象。不需要在使用 JSON.parse()做格式的轉換處理。

  • $.get()的使用

$.get()方法是$.ajax()方法基于 get 方式發送異步請求的簡化版。

語法

$.get(url,function(result))

$.get(url,"name=value&name=value",function(result))

$.get(url,data,function(result))

$.get(url,{userid:1,username:"zhangsan",...},function(result))
  • $.post()的使用

$.post()方法是$.ajax()方法基于 post 方式發送異步請求的簡化版。

語法

$.post(url,function(result))

$.post(url,"name=value&name=value",function(result))

$.post(url,data,function(result))

$.post(url,{userid:1,username:"zhangsan",...},function(result))
  • $.getJSON()的使用

$.getJSON()方法是$.ajax()方法基于get方式發送異步請求,并將響應結果中JSON格式 的字符串對象自動轉換為 JavaScript 對象。在使用該方法時要求返回的數據必須是 JSON 格 式類型。$.getJSON()方法和 resp.setContentType("application/json")是一起使用的。

語法

$.getJSON(url,function(result))

$.getJSON(url,"name=value&name=value",function(result))

$.getJSON(url,data,function(result))

$.getJSON(url,{userid:1,username:"zhangsan",...},function(result))

serialize()方法的使用

將form 表單中的數據自動拼接成 name=value&name=value 結構。

語法

var param = $("form").serialize();

param 的值為:name=value&name=value

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

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

相關文章

Scala如何寫一個通用的游戲數據爬蟲程序

以前想要獲取一些網站數據的時候&#xff0c;都是通過人工手動復制粘貼&#xff0c;這樣的效率及其低下。數據少無所謂&#xff0c;如果需要采集大量數據&#xff0c;手動就顯得乏力了。半夜睡不著&#xff0c;爬起來寫一段有關游戲商品數據的爬蟲通用模板&#xff0c;希望能幫…

專業pdf編輯工具PDF Expert mac中文版特點介紹

PDF Expert mac是一款專業的PDF編輯和閱讀工具。它可以幫助用戶在Mac、iPad和iPhone等設備上查看、注釋、編輯、填寫和簽署PDF文檔。 PDF Expert mac軟件特點 PDF編輯&#xff1a;PDF Expert提供了豐富的PDF編輯功能&#xff0c;包括添加、刪除、移動、旋轉、縮放、裁剪等操作…

基于順序表實現通訊錄

1.功能實現 功能要求 1&#xff09;至少能夠存儲100個人的通訊信息 2&#xff09;能夠保存用戶信息&#xff1a;名字、性別、年齡、電話、地址等 3&#xff09;增加聯系人信息 4&#xff09;刪除指定聯系人 5&#xff09;查找制定聯系人 6&#xff09;修改指定聯系人 7&#xf…

Hutool HttpRequest 首次請求正常 第二次被系統攔截

Hutool HttpRequest 首次請求正常 第二次被系統攔截 功能描述異常現象錯誤代碼 異常排查問題跟蹤問題總結處理方案最終修改后的代碼 功能描述 需要請求第三方某個接口&#xff0c;獲取接口中的數據。 異常現象 使用main 方法 通過Hutool 工具類發出請求&#xff0c;獲取數據…

網絡運維與網絡安全 學習筆記2023.11.22

網絡運維與網絡安全 學習筆記 第二十三天 今日目標 VLAN間通信之交換機、VLAN間通信綜合案例、浮動路由 VRRP原理與配置、VRRP鏈路跟蹤、VRRP安全認證 VLAN間通信之交換機 單臂路由的缺陷 在內網的VLAN數量增多時&#xff0c;單臂鏈路容易成為網絡瓶頸 三層交換機 具備…

react中模塊化樣式中:global的作用

在react中如果是通過import styles from ./index.less這種方式模塊化引入樣式的話&#xff0c;那么編譯后的less文件里的樣式名都會自動添加后綴。而:global的作用就是不讓類名添加后綴

利用 Apache Ranger 管理 Amazon EMR 中的數據權限

需求背景簡介 系統安全通常包括兩個核心主題&#xff1a;身份驗證和授權。一個解決“用戶是誰”的問題&#xff0c;另一個解決“用戶允許執行什么操作”的問題。在大數據領域&#xff0c;Apache Ranger 是最受歡迎的授權選擇之一&#xff0c;它支持所有主流大數據組件&#xff…

微機原理_1

一、單項選擇題(本大題共15小題,每小題3分,共45分。在每小題給出的四個備選項中,選出一個正確的答案,請將選定的答案填涂在答題紙的相應位置上。) 1,下列8086CPU標志寄存器的標志位中,不屬于狀態標志位的是(&#xff09; A. OF B. IF C. AF D. PF 8086微處理器可尋址訪問的最大…

面試中vue-router的一些知識點

Vue Router Vue Router使用舉例說明 vue-router 中 route和router的區別與聯系 route和router的區別與聯系 vue3 路由使用vue2 路由與vue3 路由的區別與聯系 Vue Router Vue Router是Vue.js官方的路由管理器&#xff0c;用于實現單頁面應用中的路由功能。它允許我們在Vue應用程…

萬界星空科技SMT行業生產管理MES系統解決方案

一、SMT行業特點&#xff1a; SMT&#xff08;Surface Mounted Technology&#xff09;作為電子組裝行業里首先的技術和工藝&#xff0c;選擇合適的MES解決方案來保障SMT生產的成功至關重要。 電子行業涉及的范圍非常廣&#xff0c;包含了汽車、電腦、電視、手機等產品上&…

HCIA-Datacom跟官方路線學習

通過兩次更換策略。最后找到最終的學習方案&#xff0c;華為ICT官網有對這個路線的學習&#xff0c;hcia基礎有這個學習路線&#xff0c;hcip也有目錄路線。所以&#xff0c;最后制定學習路線&#xff0c;是根據這個認證的路線進行學習了&#xff1a; 官網課程&#xff1a;課程…

scala 實現表達式解析

表達式解析 import org.junit.Testimport scala.collection.mutableclass ExprTestCase {private val orderSource "source_1"private val saleChannel "saleChannel"val datas new mutable.HashMap[String, String]();// p1, source1, sale1, source…

everything的高效使用方法

目錄 前言1 everything的簡單介紹2 常用搜索3 語法搜索4 正則表達式搜索5 服務器功能 前言 本文介紹everything軟件的高效使用方法&#xff0c;everything是一款在系統中快速搜索文件的軟件&#xff0c;能夠幫助人們快速定位需要查找的文件。首先介紹everything軟件的作用和使…

掌握 AI 和 NLP:深入研究 Python — 情感分析、NER 等

一、說明 我們見證了 BERT 等預訓練模型在情感分析方面的強大功能,使我們能夠破譯隱藏在文本數據中的情感。通過 SpaCy,我們探索了命名實體識別的迷人世界,揭開了隱藏在非結構化文本中的秘密。 二、問題陳述 命名實體識別(NER)是自然語言處理中的一項關鍵…

數字化時代的政務服務:構建便捷高效的線上政務大廳

引言&#xff1a; 隨著數字化時代的來臨&#xff0c;如何通過線上政務大廳搭建一個便捷高效的服務平臺&#xff0c;以更好地滿足公眾需求值得探究。線上政務大廳是政務服務的新方式&#xff0c;但搭建線上政務大廳并不是一件容易的事情&#xff0c;需要精心的規劃和設計。 一…

【藍橋杯選拔賽真題25】C++兩個數比大小 第十三屆藍橋杯青少年創意編程大賽C++編程選拔賽真題解析

目錄 C/C++兩個數比大小 一、題目要求 1、編程實現 2、輸入輸出 二、算法分析

Linux文件I/O:基本概念

Linux是一個開源的操作系統&#xff0c;它提供了一套豐富的文件I/O&#xff08;輸入/輸出&#xff09;接口&#xff0c;讓用戶和程序可以方便地對文件進行讀寫操作。文件I/O是操作系統中最基本也最重要的功能之一&#xff0c;它涉及到文件的打開、關閉、讀取、寫入、定位、鎖定…

centos無法進入系統之原因解決辦法集合

前言 可愛的小伙伴們&#xff0c;由于精力有限&#xff0c;暫時整理了兩類。如果沒有你遇到的問題也沒有關系&#xff0c;歡迎底下留言評論或私信&#xff0c;小編看到后第一時間幫助解決 一. Centos 7 LVM xfs文件系統修復 情況1&#xff1a; [sda] Assuming drive cache:…

Bean基本注解開發

Commponent 使用Component注解代替<bean>標簽 <!--注解掃描:掃描指定的基本包及其子包下的類&#xff0c;識別使用了Component注解的文件--><context:component-scan base-package"org.xfy"></context:component-scan> package org.xfy.Dao.…

【Web】preg_match繞過相關例題wp

目錄 ①[FBCTF 2019]rceservice ②[ctfshow]web130 ③[ctfshow]web131 ④[NISACTF 2022]middlerce 簡單回顧一下基礎 參考文章 p牛神文 preg_match繞過總的來講就三塊可利用 數組繞過、PCRE回溯次數限制、換行符 ①[FBCTF 2019]rceservice 先貼出附件給的源碼 &l…