AJAX 解析xml 常见定义JSON数据的格式

AJAX 解析xml  常见定义JSON数据的格式



ResultXmlAjax.js

function createXmlHttpRequest(){
var xmlHttp;
try {
xmlHttp = new XMLHttpRequest();
} catch (e) {
var MSXML = 
['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0',
'MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
for ( var i = 0; i < MSXML.length; i++) {
try {
xmlHttp = new ActiveXObject(MSXML[i]);
alert(MSXML[i]);
break;
} catch (e) {

} 
}
}
return xmlHttp;
}
function getResultXmlAjax(){
/**
* 1、获取ajax对象XmlHttpRequest
* 
*/
var ajax = createXmlHttpRequest();
/**
* 2、打开请求
*/
ajax.open("post","resultXmlAjax",true);
/**
* 3、
* /**
* application/x-www-form-urlencoded就是:jsp  form enctype 属性
* 默认的
* <form action="" enctype="application/x-www-form-urlencoded"></form>
* 设置MIME类型 如果是post提交
* 需将Content-type的首部设置为application/x-www-form-urlencoded
* 他会告知服务器正在发送数据  并且数据已经符合URL编码了
*/
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
/**
* 当状态改变时 会调用onreadystatechange属性 指定回调函数
*/
/**
* readyState
* 0代表初始化
* 1代表正在加载...open方法一调用 但是send方法还没调用
* 2代表以加载完毕 send已被调用 请求已经开始
* 3代表交互中...服务器正在发送相应
* 4代表完毕...相应发送完毕 并且我们ajax对象可以通过responseText获取返回数据
*/
//制定相应处理函数
ajax.onreadystatechange= function (){
//对象状态
if(ajax.readyState == 4){
/**
* status
* 在XmlHttpRequest对象中 服务器发送的状态码都保存在status属性中
* 可以通过把这个值和200、304比较 可以确保服务器是否
* 已发送了一个成功的相应
*/
//信息已成功返回 200 没有被修改304
if (ajax.status=='200' || ajax.status == '304') {
//处理信息数据
//alert(111);
//alert(ajax.responseText);
/**
* responseXML
* 获取后台xml格式的数据
*/
var dom = ajax.responseXML;
//获取根节点
var root = dom.lastChild;
//获取tag
var users = root.getElementsByTagName("user");
for ( var i = 0; i < users.length; i++) {
var user = users[i];
var id = user.getAttribute("userId");
alert(id);
var name = user.lastChild.lastChild.nodeValue;
alert(name);
}
}
}
};
/**
* 发送Send
*/
ajax.send("id=001");
}


/**
* JSON
* 
*/
var user1 = new Object();
user1.name = "张三";
user1.password = "123456";
//alert(user1.name);

var user2 = {};
user2.name = "张三";
user2.password = "123456";
//alert(user2.name);

var user3 = {"name":"张三","password":"123456"};
//var user3 = ({"name":"张三","password":"123456"});
//alert(user3.name);

function evalObject(s){
return eval("("+s+")");
}
//这种不加()是错的  但是可以
//var user4rStr = '{"name":"张三","password":"123456"}';
//这种也可解析
//var user4 = evalObject(user4rStr);
//必须加()才能解析
var user4rStr = '({"name":"张三","password":"123456"})';
var user4 = eval(user4rStr);
//alert(user4.name);

//数组  列表
var arr = '[{"name":"张三","password":"123456"},{"name":"李四","password":"123456"}]';
var users = evalObject(arr);
alert(users[0].name);
alert(users[1].name);
alert(users[0].password);
alert(users[1].password);

 
resultXmlAjax.jsp

<body>
<input type="button" value="请求" οnclick="getResultXmlAjax();">
</body>

 

ResultXmlAjax :Servlet

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/xml");
PrintWriter out = response.getWriter();
StringBuffer buffer = new StringBuffer();
buffer.append("<root>")
.append("<user userId = '1'>")
.append("<name>张三</name>")
.append("</user>")
.append("<user userId = '2'>")
.append("<name>王五</name>")
.append("</user>")
.append("</root>");
out.print(buffer.toString());
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值