Ajax返回值之XML、json类型

Ajax返回值之XML、json类型

2015-01-29

 

注意:Ajax默认是不能跨域的,在最新的2.0里是可以跨域,但是需要对方应答、

 

Ajax返回值之XML类型

<HTML代码>

<html>

    <head>

        <title>Ajax返回return</title>

    <script>

function createXHR(){

    var xhr = null;

    if(window.XMLHttpRequest){

        xhr = new XMLHttpRequest();

    }else if(window.ActiveXObject){

        xhr = new ActiveXObject('Microsoft.XMLHTTP');

    }

    return xhr;

}

function test1(){

    var xhr = createXHR();

    xhr.open('GET','return.php',true);

    xhr.onreadystatechange = function(){

        if(this.readyState == 4){

            alert(this.responseText);

            //alert(this.responseXML);

            var xmldom = this.responseXML;

            var chs = xmldom.getElementsByTagName('book')[0].childNodes;

            //alert(chs[0].firstChild.wholeText);

            //alert(chs[1].firstChild.wholeText);

            document.getElementById('btitle').value = chs[0].firstChild.wholeText;

            document.getElementById('bintro').value = chs[1].firstChild.wholeText;

        }

    }

    xhr.send(null);

}

    </script>

    </head>

    <body>

        书名:<input type="text" id="btitle" /><br/> 

        简介:<input type="text" id="bintro" /><br/><br/>    

        <input type="button" value="测试返回值1" onclick="test1();"/>

        <input type="button" value="测试返回值2" onclick="test2();"/>

    </body>

</html>

 

return.php 代码

<?php

header("Content-Type: text/xml");

?>

<?xml version="1.0" encoding="utf-8"?>

<bookstore><book bid="boo8"><title>天龙八部</title><intro>人生太苦</intro></book></bookstore>

 

 

我们点击按钮1:

得到:我们对到return.php文件的字符串形式的内容:

Ajax返回值之XML、json类型

然后。我们用XML格式对其进行解析,分别解析出文本节点title,和intro

就简单实现了Ajax对xml的解析

Ajax返回值之XML、json类型

Ajax返回值之json类型2

 

作为普通文本返回类型时,又有了一下几种常用的变通形式

  1. 返回剪短的标志字符串,0,1
  2. 后台返回大段的html代码,直接innerHTML到前端页面
  3. json格式,再由JS解析,

111111111111111111

{title:'天龙八部',intro:'人生八苦'}

 

var book = eval('('+this.responseText+')');    //将json文本转换为对象

alert(book);                             //得到的是对象

document.getElementById('news').innerHTML = "书名:"+book.title+"<br/>简介:"+book.intro;                            //对象名.节点 就是使用

2222222222222222

//模拟服务器数据库取数据 json_encode() 自动编码

$book = array('title'=>"天龙八部",'intro'=>'人生八苦');

echo json_encode($book);

json会自动编码:

Ajax返回值之XML、json类型

解析后得到一样的效果:

Ajax返回值之XML、json类型

 

PHP中使用json格式字符串:

使用反向解码: json_decod();    即可以实现

returnhtml.php代码:

 

foreach(array('新闻1','新闻2','新闻3') as $v)

{ echo '<li>',$v,'</li>'; }

 

 

returnjson.php 代码

<?php

 

//javascriptObjacetNotation

//{title:'天龙八部',intro:'人生八苦'}

//

//

//模拟服务器数据库取数据

$book = array('title'=>"天龙八部",'intro'=>'人生八苦');

echo json_encode($book);

 

?>

 

html代码:

 

<html>

    <head>

        <title>Ajax返回return</title>

    <script>

function createXHR(){

    var xhr = null;

    if(window.XMLHttpRequest){

        xhr = new XMLHttpRequest();

    }else if(window.ActiveXObject){

        xhr = new ActiveXObject('Microsoft.XMLHTTP');

    }

    return xhr;

}

function test1(){

    var xhr = createXHR();

    xhr.open('GET','return.php',true);

    xhr.onreadystatechange = function(){

        if(this.readyState == 4){

            alert(this.responseText);

            //alert(this.responseXML);

            var xmldom = this.responseXML;

            var chs = xmldom.getElementsByTagName('book')[0].childNodes;

            //alert(chs[0].firstChild.wholeText);

            //alert(chs[1].firstChild.wholeText);

            document.getElementById('btitle').value = chs[0].firstChild.wholeText;

            document.getElementById('bintro').value = chs[1].firstChild.wholeText;

        }

    }

    xhr.send(null);

}

function test2(){

    var xhr = createXHR();

    xhr.open('GET','returnhtml.php',true);

    xhr.onreadystatechange = function(){

        if(this.readyState == 4){

            ///alert(this.responseText);

            document.getElementById('news').innerHTML = this.responseText;

        }

    }

    xhr.send(null);

}

function test3(){

    var xhr = createXHR();

    xhr.open('GET','returnjson.php',true);

    xhr.onreadystatechange = function(){

        if(this.readyState == 4){

            //alert(this.responseText);

            //alert({name:'zhangsan',age:29});  //js对象

            var book = eval('('+this.responseText+')');

            alert(book);

            document.getElementById('news').innerHTML = "书名:"+book.title+"<br/>简介:"+book.intro;

        }

    }

    xhr.send(null);

}

    </script>

    </head>

    <body>

        书名:<input type="text" id="btitle" /><br/> 

        简介:<input type="text" id="bintro" /><br/><br/>    

        <input type="button" value="测试返回XML格式" onclick="test1();"/>

        <input type="button" value="测试返回HTML代码" onclick="test2();"/>

        <input type="button" value="测试返回json格式" onclick="test3();"/>

        <div id="news">

              

        </div>

    </body>

</html>

 

Ajax返回值之XML、json类型