zoukankan      html  css  js  c++  java
  • AJAX通过post提交数据,并获取XML格式返回结果

    AJAX简单示范:以post方式提交查询,获取查询结果,后台以XML格式返回数据,前端解析XML并显示。

    sample2.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <HTML>
    <HEAD>
    <META http-equiv="Content-Type" content="text/html; charset=utf-8">
    <TITLE>Ajax例子二</TITLE>
    <SCRIPT language="JavaScript">
    var xmlHttp = null;
    function createXMLHttpRequest() {
        if(xmlHttp == null){
             if (window.ActiveXObject) {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            else if (window.XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest();
            }else {
                alert("无法创建 XML HTTP 对象");
            }
        }
    }
    function getInfo() {
        // 后台提交
        var url = "sample2Action.jsp";
        var queryStr = "param1=hello&param2=大家好";
        createXMLHttpRequest();
        xmlHttp.onreadystatechange = handleStatsChange;
        xmlHttp.open("post", url, true);
        // 此代码需要放置在open方法下面,否则异常,后台获取不到查询参数
        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xmlHttp.send(queryStr);
    }
    function handleStatsChange() {
        var divInfo = document.getElementById("divInfo");
        if (xmlHttp.readyState == 4) {
            if (xmlHttp.status == 200) {
                var addDocument = xmlHttp.responseXML;
                var docs = addDocument.getElementsByTagName("doc");
                
                // 创建table对象,然后将xml解析结果放置进去
                var tableNode = document.createElement("table");
                tableNode.setAttribute("border", "1");
                
                // 设置标题栏
                var tr = tableNode.insertRow(0);
                var td = tr.insertCell();
                td.appendChild(document.createTextNode("title"));
                td = tr.insertCell();
                td.appendChild(document.createTextNode("content"));
                
                // 下面是内容 
                for(var i=0; i<docs.length; i++) {
                    var doc = docs[i];
                    tr = tableNode.insertRow(i+1);
                    for(var j=0; j<2; j++) {
                        td = tr.insertCell(j);
                        var title1 = doc.childNodes[j];
                        var text = document.createTextNode(title1.firstChild.nodeValue);
                        td.appendChild(text);
                    }
                }
                divInfo.appendChild(tableNode);
            }
        }
    }    
    </SCRIPT>
    </HEAD>
    <BODY>
        <input type="button" onclick="getInfo();" value="查询">
        <DIV id="divInfo"></DIV>
    </BODY>
    </HTML>

    sample2Action.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ page import="java.util.*"%>
    <%
        String param1 = request.getParameter("param1");
        String param2 = request.getParameter("param2"); // 因为是post传递,中文参数不需要额外转换
    
        // do something......
        StringBuilder sb = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
        sb.append("<add>\n");
        sb.append("  <doc>\n");
        sb.append("    <title>不雅视频爆料人:有比雷政富级别高者漏网</title>\n");
        sb.append("    <content>昨日上午,朱在律师的陪同下来到辖区北京德胜门外派出所</content>\n");
        sb.append("  </doc>\n");
        sb.append("  <doc>\n");
        sb.append("    <title>广州城中村已迁户挖河沟孤立未搬村民</title>\n");
        sb.append("    <content>当我抵达广州,站在杨箕村举头四望的时候,有一种很奇异的感觉,因为四周都是高楼林立,这</content>\n");
        sb.append("  </doc>\n");
        sb.append("</add>\n");
        
        System.out.println(param1 + "\t" + param2 + "\t" + new java.util.Date());
        System.out.println(sb.toString());
        
        // 返回值包含了中文,需要编码            
        response.setContentType("text/xml;charset=utf-8");
        response.getWriter().print(sb.toString());    
    %>

     结果

  • 相关阅读:
    手动访问和传参
    子路由
    matlab 不同尺度的矩阵存储
    贝叶斯决策
    vim的使用
    linux另一种安装方式
    Linux中profile、bashrc、bash_profile之间的区别和联系
    emacs编辑器的使用
    关于鼠标不敏感导致自以为ubuntu很怪的问题
    各种可以远程
  • 原文地址:https://www.cnblogs.com/nayitian/p/2882145.html
Copyright © 2011-2022 走看看