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

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

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

瀏覽:485日期: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| 免费成人av在线播放| 欧美一区二区三区久久| 精品视频高潮| 午夜日本精品| 欧美一区二区三区久久精品| 超碰超碰人人人人精品| 丝瓜av网站精品一区二区| 国产毛片一区二区三区| 91精品国产福利在线观看麻豆| 一区二区日韩免费看| 麻豆久久久久久久| 国产综合精品| 国产毛片久久久| 久久久噜噜噜| 日本a级不卡| 亚洲人成在线网站| 日韩精品一页| 日韩精品91| 综合激情视频| 韩国久久久久久| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 激情婷婷综合| 日本欧美韩国一区三区| 久久只有精品| 免费在线观看视频一区| 精品丝袜久久| 蜜桃久久久久久| 精品国产不卡| 亚洲日本国产| 999视频精品| 国产精品1luya在线播放| 午夜久久tv| 国产a亚洲精品| 99综合视频| 国产欧美一区二区三区国产幕精品| 成人国产精品一区二区免费麻豆| 亚洲高清成人| 18国产精品| 久久久久久夜| 亚洲综合电影一区二区三区| 激情综合激情| 欧美精品福利| 激情久久中文字幕| 7777精品| 激情欧美丁香| 国产精品视频一区二区三区综合| 少妇高潮一区二区三区99| 精品久久久久久久| 久久先锋影音| 亚洲风情在线资源| 日本精品国产| 蜜桃国内精品久久久久软件9| 日韩高清中文字幕一区二区| 亚洲国产综合在线看不卡| 久久亚洲人体| 欧美日韩1区2区3区| 蜜臀av性久久久久蜜臀aⅴ流畅 | av综合电影网站| 你懂的亚洲视频| 日韩精品视频网站| 噜噜噜躁狠狠躁狠狠精品视频 | 午夜久久一区| 99精品国产一区二区三区| 国内精品美女在线观看| 日本成人中文字幕| 蜜桃av一区二区三区电影| 欧美日韩国产精品一区二区亚洲| 美女福利一区二区三区| 成人午夜亚洲| 精品视频在线一区二区在线| 亚洲精品中文字幕乱码| 国产91精品对白在线播放| 日产午夜精品一线二线三线| 国产精品国码视频| 欧美日本不卡高清| 久久精品99国产精品| 日本不卡在线视频| 日韩国产一二三区| 日韩不卡免费视频| 日韩精品福利一区二区三区| 亚洲人成亚洲精品| 亚洲涩涩av| 亚洲精品三级| 亚洲视频电影在线| 日韩欧美精品一区二区综合视频| 免费视频一区二区| 亚洲视频二区| 日韩精品一区二区三区av| 日欧美一区二区| 日韩精品社区| 国产欧美69| 精品国产一区二区三区噜噜噜| 国产精品99久久免费| 你懂的网址国产 欧美| 国产精品免费99久久久| 国产极品久久久久久久久波多结野 | 免费一级片91| 亚洲精品三级| 日本欧美韩国一区三区| 国产日韩高清一区二区三区在线| 97精品资源在线观看| 国产欧美日韩精品高清二区综合区| 91精品91| 综合日韩在线| 国产欧美自拍一区| 精品视频在线观看网站| 精品国产乱码久久久| 日韩欧美午夜| 国产99久久| 日韩精品一级中文字幕精品视频免费观看| 免费一级片91| 国产调教精品| 国产成人1区| 精品欧美激情在线观看| 美日韩精品视频| 日韩高清二区| 鲁大师精品99久久久| 中文字幕在线视频网站| 日韩中文在线电影| 亚洲综合精品| 日本va欧美va瓶| 欧美激情久久久久久久久久久| 日韩电影二区| 丝袜国产日韩另类美女| 国产精品蜜月aⅴ在线| 欧美aa在线观看| 亚洲一区成人| 国产精品亚洲综合色区韩国| 中文字幕人成乱码在线观看| 午夜精品网站| 日本aⅴ免费视频一区二区三区| 国产精品高清一区二区| 欧美gv在线| 亚洲无线观看| 国产成人调教视频在线观看| 免费黄色成人| 日本在线一区二区三区| 四虎成人av| 视频一区视频二区中文| 欧美国产三级| 久久精品国产999大香线蕉| 91久久久精品国产| 久久激五月天综合精品| 成人精品天堂一区二区三区| 亚洲人成亚洲精品| а√在线中文在线新版| 视频一区二区三区在线| 精品国产一区二区三区噜噜噜| 欧美日韩三区| 免费久久99精品国产| 久久精品国产福利| 黄页网站一区| 国产精品白丝一区二区三区| 国产综合色产| 国产精品777777在线播放| 欧美a级片一区| 国产精品中文| 黄色成人精品网站| 精品资源在线| 亚洲精品一二三**| 丝袜av一区| 国产精品中文| 香蕉精品999视频一区二区| 精品视频一区二区三区在线观看 | 欧美一区二区性| 国产欧美日韩一级| 亚洲深夜影院| 精品久久97| 亚洲精品一二| 国产一区日韩欧美| 麻豆久久一区| 蜜臀av一区二区在线免费观看| 国产在线观看91一区二区三区| 鲁大师成人一区二区三区| 9999国产精品| 国产一级成人av| 视频一区视频二区在线观看| 国产网站在线| 欧美日韩亚洲一区三区| 亚洲一区免费| 中文av在线全新| 国产精品欧美三级在线观看 | 欧美视频一区| 午夜在线观看免费一区| 精品免费视频| 日韩欧美高清一区二区三区| 1000部精品久久久久久久久| 精品视频一二| 国产精品一区二区三区四区在线观看| 欧美另类综合| 色婷婷精品视频| 精品视频高潮| 欧美激情日韩|