返回值类型
1 普通文本 ,这就是responsetext之前一直用过 2 xml文档 看下面
其实就这两种json是因为正好可以被js解析,所以也能使用 看下面
html body部分
<body>
<input type="text" id="a">
<input type="text" id="b">
<input type="button" value="返回xml" onclick="test1()">
<input type="button" value="返回json" onclick="test2()">
</body>
点击按钮,就会有返回值到前面的文本框
xml 可以得到xml文件里的东西
function test1(){
xhr.open('GET','./4xml.php',true);
xhr.send(null);
xhr.onreadystatechange = function(){
if (this.readyState==4) {
// alert(this.responseXML);
// 如果是xml文件会弹出xml object
var xmldom=this.responseXML;
var chs=xmldom.getElementsByTagName('book')[0].firstChild.data;
// 三年高考
// alert(chs);
document.getElementById('a').value=chs;
}
}
}
<?php
// 返回值responsejxxxxx的系列 需要加header浏览器才知道这是xml文件
header('Content-type:text/xml');
?>
<?xml version="1.0" encoding="utf-8" ?>
<shop>
<happy>
<book>三年模拟五年高考</book>
<computer>apple</computer>
<book>银魂</book>
</happy>
</shop>
json
function test2(){
xhr.open('GET','./4json.php',true);
xhr.send(null);
xhr.onreadystatechange = function(){
if (this.readyState==4) {
// alert({name:'zhang',age:23});
// 直接alert json格式正好可以被js解析 方法1
// 如果通过php得到的 的上面这种形式需要eval ,要不然就是字符串 方法2
// alert(this.responseText);
// 要加() 当成表达式返回
var ren = eval('('+this.responseText+')');
alert(ren);
// 换成json可以用点很方便的找到
document.getElementById('a').value=ren.name ;
}
}
}
json.php
<?php
echo "{name:'zhang',age:23}";
// $ren=array('name'=>'zhang','age'=>'29');
// echo json_encode($ren); 方法3 把这行和上一行注释去掉,和最上面一行是同样的效果
// json_decode()
?>