Ajax从服务器端获取数据---原生态Ajax

写在前面的话

Ajax从服务器获取的数据都是字符串,但是通过不同的解析,可以解析为XML或JSON来进行应用.

一般来说.使用XML格式的数据比较通用,但是服务器和客户端解析起来都比较复杂一些;而使用JSON语句话,服务端需要多做一些工作,但到了客户端,通过使用eval()函数来进行解析,就会获得js对象,使用起来很方便.在使用过程中,究竟使用哪种方法,这个要根据项目的实际需要,建议:在能使用JSON的情况下,尽量使用JSON.

具体使用方法参见例子.

例子

1.XML数据user.xml

<?xml version="1.0" encoding="utf-8" ?>
<users>
  <user>
    <username>张三XML</username>
    <age>33</age>
  </user>
  <user>
    <username>李四XML</username>
    <age>34</age>
  </user>
</users>

2.JSON数据user.js

[
    { username : "张三JSON", age : 33},
    { username : "李四JSON", age : 34}
]

3.HTML页面代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <style type="text/css">
        table,td,th
        {
            border:solid 1px silver;
            border-collapse:collapse;
            text-align:center;
        }    

        th,td
        {
            width:100px;
            height:20px;
        }
    </style>
    <script type="text/javascript">
        function GetXML() {
            var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHttp");

            xmlHttp.open("get", "user.xml?random=" + Math.random(), true);

            xmlHttp.onreadystatechange = function () {
                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    //获取返回XML数据主体内容
                    var result = xmlHttp.responseXML.documentElement;

                    //获得user节点元素
                    var users = result.getElementsByTagName("user");

                    for (var i = 0; i < users.length; i++) {
                        //获取单个user信息
                            var user = users[i];

                        //获取user具体信息
                           var username = user.getElementsByTagName("username")[0].text;
                        var age = user.getElementsByTagName("age")[0].text;

                        //添加行
                        appendRow(username, age);
                    }
                }
            }

            xmlHttp.send();
        }

        //添加新行
        function appendRow(username, age) {
            var ui = document.getElementById("userinfo");

            //添加新行
            var newRow = ui.insertRow(ui.rows.length);

            //添加新的单元格
            newRow.insertCell(0).innerHTML = username;
            newRow.insertCell(1).innerHTML = age;

        }

        function GetJSON() {
            var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHttp");

            xmlHttp.open("get", "user.js?random=" + Math.random(), true);

            xmlHttp.onreadystatechange = function () {
                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    var result = xmlHttp.responseText;

                    //使用eval函数使返回的字符串变成js对象
                    var users = eval("(" + result + ")");

                    for (var i = 0; i < users.length; i++) {
                        //获取单个user信息
                           var user = users[i];

                        //此处已经知道user数据的格式,故可以直接用user.username和user.age
                        appendRow(user.username, user.age);
                    }
                }
            }

            xmlHttp.send();
        }

    </script>
</head>
<body>
    <input type="button" value="加载XML数据" onclick="GetXML();" />
    <input type="button" value="加载JSON数据" onclick="GetJSON();" />
    <br />
    <br />
    <table id="userinfo">
        <thead>
        <tr>
            <th>
                姓名
            </th>
            <th>
                年龄
            </th>
        </tr></thead>
        <tbody>
        </tbody>
    </table>
</body>
</html>

效果

运行页面,点击"加载XML数据"按钮,会从XML数据文件中读取数据并添加至表格中;点击"加载JSON数据"按钮,会从js文件中读取数据并添加至表格.

时间: 2024-08-03 14:46:22

Ajax从服务器端获取数据---原生态Ajax的相关文章

Ajax从服务器端获取数据

写在前面的话 Ajax从服务器获取的数据都是字符串,但是通过不同的解析,可以解析为XML或JSON来进行应用. 一般来说.使用XML格式的数据比较通用,但是服务器和客户端解析起来都比较复杂一些;而使用JSON语句话,服务端需要多做一些工作,但到了客户端,通过使用eval()函数来进行解析,就会获得js对象,使用起来很方便.在使用过程中,究竟使用哪种方法,这个要根据项目的实际需要,建议:在能使用JSON的情况下,尽量使用JSON. 具体使用方法参见例子. 例子 1.XML数据user.xml <?

ajax即时更新获取数据 结合ajax js引用使用 当然需要搭建本地环境 并且创建php

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> <script src="13ajax.js"></script> <script> window.onload=function(){ var oBtn=document.getElem

MVC—实现ajax+mvc异步获取数据

之前写过ajax和一般处理程序的结合实现前后台的数据交换的博客,如今做系统用到了MVC,同一时候也用到了异步获取数据. ajax+一般处理程序与MVC+ajax原理是一样的在"URL"中前者写的一般处理程序的名字.而后者写到Controller中须要调用的方法. Controller中的设计 using System.Collections.Generic; using System.Web.Mvc; namespace mvcAjaxByAjax.Controllers { //考试

ajax 跨域获取数据jsonp使用

昨天帮同事从其他服务器传过来的json数据进行处理,遇到该问题.开始我的思路是用ajax直接请求把数据弄出来就OK了,然而出错了.原因是我使用的ajax 返回类型为json,默认ajax阻止跨服获取数据的.结合其他博文,ajax的dataType使用jsonp来解决此问题.开始觉得jsonp与json的使用类似,一步步的写着代码,如下: $.ajax({ type:'get', async:false, url:'http://112.11.131.238/nanhunongjing/GetCo

React 中的 AJAX 请求:获取数据的方法

React 中的 AJAX 请求:获取数据的方法 React 只是使用 props 和 state 两处的数据进行组件渲染. 因此,想要使用来自服务端的数据,必须将数据放入组件的 props 或 state 中. 首先引入 axios. 1.`import axios from 'axios';` constructor 方法非常标准,调用 super,然后初始化 state,设置一个空的 posts 数 传入新的 posts 数组,使用 this.setState 方法更新组件状态.这会导致重

jsTree通过AJAX从后台获取数据

页面代码: <div id="MenuTree"></div> javascript代码: $(document).ready(function ($) { InitMenuTree(); }); function InitMenuTree() { $('#MenuTree').data('jstree', false); $.getJSON('@Url.Action("GetMenuTree", "AdminMenu")

jQuery使用ajax跨域获取数据

var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld";  jQuery.support.cors = true; //之前没有加这句老是提示no transport,我没去深想. $.ajax ({ type: "POST", contentType: "application/x-www-form-urlencoded", dataType: "html&q

ajax初试,获取数据

安利一个很有意思的网站,叫天行数据.去那里注册了账号后,可以用这个网站的接口做数据测试. <body> <div id="test"> </div> <div id="aaa"> <a href="javascript:void(0)" onclick="get()">获取图片</a> </div> <script> var key

ajax交互servlet返回数据和jdbc模糊查询-中文-已经设置了UTF-8和解决了乱码

1.编码是将字符按一定翻译方式转换成字节存储在内存或外存中,解码是按照一定翻译方式将存储中的字节转换成字符. 2.ASCII是单字节,最高位总为0,相当于只占用了一个字节的7位,2^7=128个字符,相当于键盘上的128个键,有大小写因为字母,有*,%¥#@!+....等这些可显示字符,也有不可以显示的控制符F1,ctr... 而ISO-8859-1是启用了ASCII码的最高位,理论上是能再多128位,实际上没用掉这么多,至于多了那些,你们自己查下表 UTF-8是可变长的,具体中文几个字节,怎么