日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

AJAX實現JSON與XML數據交換方法詳解

瀏覽:482日期:2022-06-12 08:01:23
目錄
  • 1、JS中如何創建和訪問JSON對象
  • 2、基于JSON的數據交換
  • 3、基于XML的數據交換

1、JS中如何創建和訪問JSON對象

(1)在javascript語言中怎么創建一個json對象,語法是什么?

"屬性名" : 屬性值,"屬性名" : 屬性值.........的格式!

注意:屬性值的數據類型隨意;可能是數字,可能是布爾類型,可能是字符串,可能是數組,也可能是一個json對象.....

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>    <script type="text/javascript">// 先創建一個JSON對象var address = {    "city" :"安徽",    "street" : "城關鎮",    "zipcode" : "123"}// 另一個JSON對象var user = {    "usercode" : 111,    "username" : "zhangsan",    "sex" : true,    "age" : 20,    "aihao" : ["抽煙","喝酒","燙頭"],    "addr" : address}// 上面就等價于var user = {    "usercode" : 111,    "username" : "zhangsan",    "sex" : true,    "age" : 20,    "aihao" : ["抽煙","喝酒","燙頭"],    "addr" :{"usercode" : 111,"username" : "zhangsan","sex" : true,"age" : 20,"aihao" : ["抽煙","喝酒","燙頭"],"addr" : address}}    </script></body></html>

(2)如何去訪問json對象?主要有兩種方式:

第一種方式:使用 .屬性名 的方式

第二種方式:使用 ["屬性名"] 的方式

   // 第一種方式   console.log(address.city);   console.log(user.addr.street);   for (var i = 0;i<user.aihao.length;i++){console.log(user.aihao[i]);   }   // 第二種方式   console.log(address["city"]);   console.log(user["sex"]?"男":"女");

2、基于JSON的數據交換

(1)將JSON格式字符串轉換為JSON對象

我們知道從后端java程序中響應回來的是字符串(json格式的字符串),那么你怎么把json格式的字符串轉換成json對象呢?主要有兩種方式:

JSON格式的字符串

var fromJavaServerJsonStr = "{"usercode" : 111, "age" : 20}";// \是轉義字符的作用,防止與外面的雙引號沖突var fromJavaServerJsonStr = "{\"usercode\" : 111, \"age\" : 20}";

第一種方式:使用eval函數

window.eval("var jsonobj1 = " + fromJavaServerJsonStr);// 進行訪問alert(jsonobj1.usercode); // 111

第二種方式:調用javascript語言中的內置對象JSON的一個方法parse。

var jsonobj2 = JSON.parse(fromJavaServerJsonStr);alert(jsonobj2.age); // 20

(2)基于JSON的數據交換

①對于后端,不在寫html的代碼,只負責把數據以JSON格式的字符串返回;后端變輕松了。

②對于前端,負責把接收到的JSON格式的字符串轉換成JSON對象,并完成拼串的操作;前端變復雜了。

③整體上,后端只會出現后端的代碼,前端只會出現前端的代碼,便于維護!

第一種方式:對于靜態的字符串

后端得到靜態的數據,不在拼接HTML程序(寫前端代碼),只負責把數據響應回去,拼接成JSON格式的字符串

StringBuilder html = new StringBuilder();html.append("<tr>");html.append("<td>1</td>");html.append("<td>王五</td>");html.append("<td>20</td>");html.append("<td>北京大興區</td>");html.append("</tr>");html.append("<tr>");html.append("<td>2</td>");html.append("<td>李四</td>");html.append("<td>22</td>");html.append("<td>北京海淀區</td>");html.append("</tr>");// --------------------------------------------修改為// 將以上程序拼接HTML,換成拼接JSON格式的字符串。String jsonStr = "[{\"name\":\"王五\",\"age\":20,\"addr\":\"北京大興區\"}, {\"name\":\"李四\",\"age\":22,\"addr\":\"北京海淀區\"}]";// 響應JSON格式的字符串給前端。out.print(jsonStr);

前端不在直接拿后端拼好的字符串格式,而是拿到JSON格式的字符串進行處理,在前端進行拼串

document.getElementById("stutbody").innerHTML = this.responseText// -----------------------------------修改為// 將json格式的字符串轉換成json對象var stuList = JSON.parse(this.responseText);// 是一個數組,并且數組中有多個學生數據var html = ""for (var i = 0; i < stuList.length; i++) { var stu = stuList[i] html += "<tr>" html += "<td>"+(i+1)+"</td>" html += "<td>"+stu.name+"</td>" html += "<td>"+stu.age+"</td>" html += "<td>"+stu.addr+"</td>" html += "</tr>"     }document.getElementById("stutbody").innerHTML = html

第二種方式:連接數據庫動態拼接JSON字符串

①創建數據庫表

②后端連接數據庫,拼接成JSON格式的字符串

package com.bjpowernode.javaweb.ajax;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;import java.sql.*;/** * @Author:朗朗乾坤 * @Package:com.bjpowernode.javaweb.ajax * @Project:ajax * @name:AjaxRequest5Servlet * @Date:2022/12/6 17:13 */@WebServlet("/ajaxrequest5")public class AjaxRequest5Servlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {// 響應到瀏覽器response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();// 用于拼接成JSON的字符串StringBuffer json = new StringBuffer();String jsonobj = "";// 連接數據庫Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {    // 注冊驅動    Class.forName("com.mysql.jdbc.Driver");    // 獲取連接    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC", "root", "123");    // 獲取預編譯的數據庫操作對象    String sql = "select name,age,addr from t_student ";    ps = conn.prepareStatement(sql);    // 執行sql    rs = ps.executeQuery();    // 處理查詢結果集    json.append("[");    while (rs.next()) { // 每循環一次,就拼接一次String name = rs.getString("name");String age = rs.getString("age");String addr = rs.getString("addr");// 拼成JSON格式的字符串對象,每次循環拼接的格式如下// {"name":" 王五 ","age": 20 ,"addr":" 北京大興區 "},json.append(" {\"name\":\"");json.append(name);json.append("\",\"age\":");json.append(age);json.append(",\"addr\":\"");json.append(addr);json.append("\"},");    }    // 上面這樣拼接,最后一個JSON格式的對象會多一個逗號,所以進行截串    jsonobj = json.substring(0,json.length()-1) + "]";} catch (ClassNotFoundException e) {    e.printStackTrace();} catch (SQLException e) {    e.printStackTrace();} finally {    // 釋放資源    if (rs != null) {try {    rs.close();} catch (SQLException e) {    e.printStackTrace();}    }    if (ps != null) {try {    ps.close();} catch (SQLException e) {    e.printStackTrace();}    }    if (conn != null) {try {    conn.close();} catch (SQLException e) {    e.printStackTrace();}    }}// 響應JSON格式的字符串給前端out.print(jsonobj);    }}

③前端對JSON格式的字符串進行處理,然后拼串

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>發送AJAX請求,顯示學生列表</title></head><body><script type="text/javascript">    window.onload = function () {    document.getElementById("btn").onclick = function () {// 1.創建核心對象var xhr = new XMLHttpRequest();// 2.注冊回調函數xhr.onreadystatechange = function () {    if (this.readyState == 4) {if (this.status == 200) {    //document.getElementById("mybody").innerHTML = this.responseText    // 將json格式的字符串轉換成json對象    var stuList = JSON.parse(this.responseText)    // 是一個數組,并且數組中有多個學生數據    var html = ""    for (var i = 0; i < stuList.length; i++) {var stu = stuList[i]html += "<tr>"html += "<td>"+(i+1)+"</td>"html += "<td>"+stu.name+"</td>"html += "<td>"+stu.age+"</td>"html += "<td>"+stu.addr+"</td>"html += "</tr>"    }    document.getElementById("mybody").innerHTML = html} else {    alert(this.status)}    }}// 3.開啟通道xhr.open("GET", "/ajax/ajaxrequest5", true)// 4.發送請求xhr.send()    }}</script>    <input type="button" value="顯示學員列表" id="btn">    <table border="1px" width="50%"><tr>    <th>序號</th>    <th>姓名</th>    <th>年齡</th>    <th>住址</th></tr><!--具體的內容需要連接數據庫動態獲取,為了便于操作,寫一個tbody--><tbody id="mybody">    <!--具體內容響應在這里--></tbody>    </table></body></html>

④效果展示,點擊按鈕

(3)fastjson組件優化代碼

從上面代碼來看,拼接JSON格式的字符串太痛苦,可以使用阿里巴巴的fastjson組件,它可以將java對象轉換成json格式的字符串

標簽: Ajax
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
超碰成人av| 日韩免费久久| 日韩一级不卡| 夜夜嗨一区二区| 视频一区视频二区中文字幕| 鲁大师成人一区二区三区| 蘑菇福利视频一区播放| 日韩欧美中文字幕电影| 欧美日韩亚洲国产精品| 精品亚洲a∨一区二区三区18| 成人综合一区| 精品福利久久久| 成人日韩在线| 男女男精品视频网| 免费在线亚洲欧美| 亚洲午夜在线| 亚洲男人在线| 精品理论电影在线| 91九色精品| 欧美久久一区二区三区| 精品成人免费一区二区在线播放| 黄色在线一区| 国产免费av国片精品草莓男男| 红杏一区二区三区| 99久久精品费精品国产| 亚洲人亚洲人色久| 久久99视频| 婷婷色综合网| 国产精品伊人| 免费黄色成人| 国产日韩欧美一区二区三区| 色天使综合视频| 亚洲aⅴ网站| 日韩欧美一区二区三区在线观看| 亚洲天堂日韩在线| 丝袜诱惑一区二区| 日本不卡一区二区三区| 成人啊v在线| 91欧美极品| 欧美日韩国产亚洲一区| 精品日韩一区| 在线看片一区| 特黄毛片在线观看| 国产精品中文字幕制服诱惑| 黄色欧美日韩| 久草免费在线视频| 日本欧美在线| 悠悠资源网久久精品| 精品国产乱码久久久| 亚洲一二av| 播放一区二区| 国产欧美一级| 99在线精品免费视频九九视| 国产a亚洲精品| 欧美午夜网站| 日韩精品一二三四| 成人看片网站| 九九九精品视频| 亚洲v天堂v手机在线| 九九久久电影| 一区二区三区四区日本视频| 日韩毛片网站| 国产视频久久| 久久国产影院| 国产精品久久久久久久久久10秀 | 久久麻豆精品| 麻豆成人在线观看| 日韩精选在线| 欧美日韩国产在线一区| 91精品韩国| 国产成人精品免费视| 国产欧美日韩精品高清二区综合区| 性欧美精品高清| 国产一区欧美| www.九色在线| 国产一区二区三区不卡av| 久久国产人妖系列| 五月激激激综合网色播| 免费人成在线不卡| 伊人久久成人| 在线午夜精品| 亚洲欧美久久久| 国产精品日韩| 日韩欧美看国产| 国产精品二区不卡| 精品中文字幕一区二区三区四区| 日韩中出av| 日本综合视频| 日韩二区三区四区| 欧美片网站免费| 日韩欧美高清一区二区三区| 日韩欧美激情电影| 日韩福利视频导航| 久久国产精品色av免费看| 国产三级一区| 麻豆国产精品一区二区三区| 国产极品久久久久久久久波多结野| 日本va欧美va瓶| 国产精品日韩久久久| 三级一区在线视频先锋| 亚洲视频www| 亚洲精品影院在线观看| 日本成人一区二区| 国产精品天天看天天狠| 久久99蜜桃| 国产66精品| 蜜桃视频在线网站| 五月天久久网站| 综合激情网...| 欧美天堂一区二区| 国产精品久久777777毛茸茸| 久久亚洲国产精品尤物| 91日韩免费| 久久五月天小说| 在线亚洲国产精品网站| 亚洲精品乱码久久久久久蜜桃麻豆| 日韩精品一区第一页| 久久激情五月婷婷| 日韩成人精品一区二区| 不卡视频在线| 日韩中文av| 久久午夜影院| 久久精品国产大片免费观看| 一区二区电影| 久久精品亚洲一区二区| 久久精品国产99久久| 亚洲专区视频| 精品在线网站观看| 久久久久欧美精品| 一区二区国产精品| 国产成人精品一区二区三区视频| 久久亚洲国产| 日韩av午夜在线观看| 视频在线不卡免费观看| 亚洲欧美日韩专区| 免费观看亚洲天堂| 一区二区小说| 国产精品欧美一区二区三区不卡| 日韩高清欧美| 亚洲欧洲日韩| 亚洲人成在线网站| 日韩va欧美va亚洲va久久| 在线观看精品| 亚洲日韩视频| 久久久一二三| 国产精品一区二区三区av麻| 91精品福利| 麻豆精品久久| 视频一区二区中文字幕| 91视频一区| 天堂va欧美ⅴa亚洲va一国产| 中文字幕人成乱码在线观看| 香蕉久久一区| 亚洲高清av| 国产精品www994| 久久xxxx| 久久国产中文字幕| 精品三级av| 亚洲精品亚洲人成在线观看| 久久亚洲国产| 欧美精品91| 亚洲精品乱码日韩| 欧美精品一区二区久久| 国产一区丝袜| 日韩和欧美一区二区| 99久久久久| 国产成人免费| 国产精品美女午夜爽爽| 亚洲日本欧美| 在线亚洲自拍| 激情综合网址| 日韩欧美综合| 久久免费视频66| 日韩av影院| 一区二区国产在线| 久久久久国产| 福利在线一区| 国产一精品一av一免费爽爽| 天堂va蜜桃一区二区三区| 久久久久99| 色在线中文字幕| 国产一区二区三区不卡视频网站 | 在线亚洲成人| 99久久99视频只有精品| 欧美丰满日韩| 国产免费播放一区二区| 亚洲精品人人| 亚洲日韩视频| 久久国产99| 亚洲欧洲一区二区天堂久久| 久久九九电影| 久久久国产精品一区二区中文| 久久久久久久欧美精品| 98精品视频| 精品国产黄a∨片高清在线| 国产精品成人3p一区二区三区| 日韩精品中文字幕一区二区| 蜜桃视频一区二区三区| 老鸭窝毛片一区二区三区| 在线综合视频|