AJAX XML的数据传输

AJAX JSON的基础之上,改造成XML的数据传输
1.需要后端改响应类型
response.setContentType(“text/html;charset=UTF-8”);
改成response.setContentType(“text/xml;charset=UTF-8”);
2.后端拼接XML字符串
3.前端接收XML并解析

后端代码

@WebServlet("/ajaxdeptxml")
public class AjaxDeptXMLServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/xml;charset=UTF-8");
        PrintWriter out = response.getWriter();
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        StringBuffer xml = new StringBuffer();
        String xmlstr = "";
        try {
            conn = DButil.getConnection();
            String sql = "select * from t_dept";
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
            xml.append("<depts>");
            while (rs.next()){
                xml.append("<dept>");
                xml.append("<deptno>" + rs.getInt("deptno") + "</deptno>");
                xml.append("<dname>" + rs.getString("dname") + "</dname>");
                xml.append("<loc>" + rs.getString("loc") + "</loc>");
                xml.append("</dept>");
            }
            xml.append("</depts>");
            xmlstr = xml.substring(0, xml.length());
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DButil.close(conn,ps,rs);
        }
        out.print(xmlstr);
    }
}

html解析

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ajax dept xml</title>
</head>
<body>
<script type="text/javascript">
    window.onload = function (){
        document.getElementById("btn").onclick = function (){
            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function (){
                if (xhr.readyState == 4) {
                    if (xhr.status == 200) {
                        var xml = this.responseXML;
                        var xmlstu = ""
                        var depts = xml.getElementsByTagName("dept")//获取<dept>元素,返回多个对象
                        for (let i = 0; i < depts.length; i++) {
                            var dept = depts[i]//获取depts下的所有子节点
                            var value = dept.childNodes//获取dept子节点下所有元素
                            xmlstu += "<tr>"
                            for (var j = 0; j < value.length; j++) {
                                var node = value[j];
                                if (node.nodeName == "deptno") {
                                    xmlstu += "<td>" + node.textContent + "</td>"
                                }
                                if (node.nodeName == "dname") {
                                    xmlstu += "<td>" + node.textContent + "</td>"
                                }
                                if (node.nodeName == "loc") {
                                    xmlstu += "<td>" + node.textContent + "</td>"
                                }
                            }
                            xmlstu += "</tr>"
                        }
                        document.getElementById("deptbody").innerHTML = xmlstu
                    }else{
                        alert(xhr.status)
                    }
                }
            }
            xhr.open("GET","/ajax_dept/ajaxdeptxml",true)
            xhr.send()
        }
    }
</script>
<button id="btn">显示部门列表</button>
<table width="50%" border="1px">
    <thead>
        <tr>
            <th>部门编号</th>
            <th>部门名称</th>
            <th>部门位置</th>
        </tr>
    </thead>
    <tbody id="deptbody">

    </tbody>
</table>
</body>
</html>

结果
请添加图片描述
xml和JSON都是常用的数据交换格式

  • XML体积大,解析麻烦。较少用。
  • JSON体积小,解析简单,较常用。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忆亦何为

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值