成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:390日期: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
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美在线不卡| 在线观看日韩电影| 蜜桃伊人久久| 亚洲精品写真福利| 欧美日韩网站| 国产日韩精品一区二区浪潮av| 丁香啪啪综合成人亚洲小说| 欧美人成免费网站| 美女性感视频久久| 色就色 综合激情| 亚洲电影欧美电影有声小说| 国产精品色网| 一区二区三区免费网站| 亚洲国产精品毛片| 国产精品成人在线观看| 国产综合婷婷| 2020国产成人综合网| 成人a免费在线看| 精品少妇一区二区三区 | 91精品欧美综合在线观看最新| 久久激情五月激情| 欧美日韩性生活| 国内精品免费在线观看| 欧美日韩激情一区二区三区| 久久国产免费看| 在线日韩av片| 狠狠色丁香久久婷婷综| 欧美日韩国产一区二区三区地区| 久久99久久99| 制服视频三区第一页精品| 国产资源在线一区| 91精品国产综合久久久久| 成人综合激情网| 亚洲精品一区二区三区影院| 成人ar影院免费观看视频| 精品久久久久久最新网址| 99re视频精品| 欧美韩日一区二区三区四区| 国内在线观看一区二区三区| 亚洲三级电影网站| 久久av二区| 激情综合一区二区三区| 欧美成人一区二区| 欧美xx69| 亚洲精品菠萝久久久久久久| 免费在线成人| 极品少妇xxxx偷拍精品少妇| 精品国产伦一区二区三区免费| 你懂的一区二区| 亚洲免费成人av| 日本精品一区二区三区高清 | 亚洲图色在线| 亚洲电影一区二区三区| 色丁香久综合在线久综合在线观看| 日本aⅴ精品一区二区三区| 欧美日韩电影一区| gogo大胆日本视频一区| 亚洲国产精品二十页| 99www免费人成精品| 免费精品视频最新在线| 日韩手机在线导航| 国产精品豆花视频| 午夜精品久久久久久久久久久| 欧美日韩高清一区| 91污片在线观看| 一区二区三区免费在线观看| 欧美体内she精视频| 成人午夜av电影| 亚洲人成网站在线| 在线精品观看国产| 菠萝蜜视频在线观看一区| 综合久久久久久久| 欧美在线看片a免费观看| 成人国产精品免费观看视频| 中文字幕欧美一| 久久婷婷人人澡人人喊人人爽| 国内一区二区在线| 国产精品网站在线观看| 麻豆久久精品| 国产传媒欧美日韩成人| 中文幕一区二区三区久久蜜桃| 麻豆精品传媒视频| 成人午夜免费av| 综合在线观看色| 欧美伊人久久久久久久久影院| 99久久国产综合精品女不卡| 亚洲高清不卡在线| 26uuu欧美| 葵司免费一区二区三区四区五区| 成人网在线播放| 亚洲成人手机在线| 欧美精品一区男女天堂| 亚洲欧美大片| 成人av中文字幕| 亚洲综合在线第一页| 欧美大片在线观看一区二区| 国产区二精品视| 福利视频网站一区二区三区| 亚洲激情在线激情| 91精品国产欧美日韩| 在线观看的日韩av| 国产精品亚洲一区二区三区在线| 亚洲人快播电影网| 91精品婷婷国产综合久久| 亚洲国产日本| 国产高清久久久| 亚洲一区二区av在线| 欧美刺激午夜性久久久久久久| 一区二区国产在线观看| 不卡视频免费播放| 日产国产欧美视频一区精品| 亚洲国产精品成人久久综合一区| 欧美唯美清纯偷拍| 日韩午夜激情| 国产jizzjizz一区二区| 亚洲影视在线观看| 久久久久久久久免费| 欧美做爰猛烈大尺度电影无法无天| 国产精品大全| 成人午夜伦理影院| 麻豆精品久久久| 亚洲欧美另类久久久精品| 日韩一区二区三区电影在线观看 | 欧美一级午夜免费电影| 久久国产精品一区二区三区| 99国内精品久久| 麻豆成人在线观看| 亚洲人妖av一区二区| 欧美一区二区三区四区高清| 麻豆精品91| 伊大人香蕉综合8在线视| 成人av午夜电影| 玖玖九九国产精品| 亚洲va欧美va国产va天堂影院| 中文字幕欧美激情| 日韩精品一区二区三区swag| 欧美性一区二区| 亚洲一区免费看| 亚洲国内欧美| 91原创在线视频| 国产成人av一区| 久久不见久久见免费视频7| 亚洲成在人线免费| 成人免费小视频| 精品国产露脸精彩对白| 欧美日韩高清在线| 色久综合一二码| 国产精品日本| 激情五月***国产精品| 成人一区二区三区视频| 激情久久五月天| 日韩激情中文字幕| 亚洲福利视频一区二区| 亚洲激情自拍偷拍| 国产精品毛片高清在线完整版| www成人在线观看| 日韩午夜电影在线观看| 欧美日本一区二区| 色欧美乱欧美15图片| 亚洲一区二区精品在线观看| 伊人成年综合电影网| 国内精品国语自产拍在线观看| 欧美96在线丨欧| 99久久99久久综合| 成人综合在线网站| 成人午夜电影网站| 国产99精品国产| 国产传媒日韩欧美成人| 久久99深爱久久99精品| 日韩制服丝袜av| 亚洲va国产天堂va久久en| 一区二区三区日韩欧美| 亚洲美女视频在线| 一区在线观看视频| 中文字幕一区二区在线观看| 国产精品成人免费在线| 自拍偷自拍亚洲精品播放| 亚洲欧美在线高清| 亚洲三级小视频| 亚洲在线观看免费| 五月激情综合婷婷| 日韩av电影天堂| 久久精品久久99精品久久| 韩国欧美国产1区| 国产精品一区不卡| 丁香亚洲综合激情啪啪综合| 成人永久aaa| 欧美 日韩 国产在线 | 色综合久久久久久久| 老色鬼久久亚洲一区二区| 一本一本大道香蕉久在线精品| 色偷偷成人一区二区三区91| 91精品1区2区| 欧美日本一区二区| 欧美成人在线直播| 久久精品视频一区二区| 日韩一区欧美小说| 亚洲大型综合色站| 久久99国产精品免费| 成人黄色小视频|