ajax、xml、json

一、ajax

1.ajax的概念

         (1)我们使用表单登录,我们输入用户名,密码,这个时候点击登录,表单直接提交,把请求发给服务器,服务器接收到请求,处理请求,完成响应,在这个处理的过程中,用户一直处于一个等待的状态。用户在页面不能做其他的操作,就算我做其他的操作,服务器响应了之后,响应回来的界面把原来的界面覆盖,我们把这种方式的交互叫做同步交互

         (2)比如我用户注册,我输入了用户名,它会直接给我一个提示,该用户名已经被注册。我们输入用户名,发送了一个请求,服务器接收到请求,处理请求,完成响应,在这样服务器处理的一个过程当中用户是可以做其他事情,等服务器响应完毕,响应回来的数据不会把原来的页面覆盖,我们把这种交互叫做异步交互

           异步交互实现的效果:页面不刷新,就可以跟服务器进行动态数据交互。我们做ajax开发都是异步交互,即页面不刷新,跟服务器进行交互。

 2.怎样完成数据交互        

          js给我们提供了一个对象,这个对象可以用跟服务器进行交互也就是通过这个对象我们可以发送http请求,通过这个对象我们可以接受服务器返回的数据。

     这个对象是浏览器直接提供的XMLHttpRequest()

    (1)创建一个对象               var xhr=new XMLHttpRequest();
                 (2)跟服务器建立一个连接              xhr.open(“GET/POST”,“xxx.php”);第一个“”里面是请求提交的方式,即get或post,第二个“”里面是提交的地址

          (3)发送数据给服务器                     xhr.send()

①get方式提交时,没有提交体,如果要发数据给服务器,这个数据必须放在地址里面,发送参数数据都应该写在地址路径后面。此时格式为                   xhr.open(“GET”,“xxx.php?username=zhangsan”);

                                                       xhr.send(null);

对应的xxx.php为:                          $data=$_GET;   var_dump($data);

②post提交方式,发给服务器的数据在请求体当中,我们必须在发送数据之前给服务器一个请求头,Ⅰ.发送请求头的方法.请求头的名称是什么,请求头对应的值是什么?

 格式为:                                        xhr.open(“POST”,“xxx.php”);

                                                       xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

                                                       xhr.send(“username=zhangsan”);

对应的xxx.php为:                          $data=$_POST;   var_dump($data);

           (4)接收响应的数据          时刻监听着服务器状态的改变,服务器在客户端响应的过程当中会给客户端很多的状态,当服务器在响应的过程中的时候会一直调用这个方法。

                                                xhr.onreadystatechange=function(){

                                                 //可以获取服务器端的状态  xhr.readyState共有0,1,2,3,4五个状态

                                                 4:代表服务器已经响应完成,所有数据响应完成

                                                 xhr.status:是服务器端给客户端的一个状态码  200:代表服务器响应ok

                                                 判断服务器是否响应完成且响应ok。满足条件才会将数据接收成功,完成一定的事件

                                                  if(xhr.readyState==4 && xhr.status==200){

                                                         var data = xhr.responseText;//返回一个字符串

                                                         alert(data);console.log(data);此处这样可以判断数据是否接收成功,用于bug调试

                                                  }

                                           }

3.总结。

        ajax:页面不刷新,可以从服务器获取到数据,我们是通过XMLHttpRequest获取到数据,通过dom把收到的数据写到页面上去的。

二、使用ajax客户端浏览器与服务器进行交互时,传递数据的格式

        发送一个请求给服务器,如果数据在网络上面传递,服务器数据非常多,比较复杂,客户端接收到这些数据,要把这些数据转换成html再放到页面上。如果没有一定的格式,解析这些数据非常麻烦(方便客户端解析这些数据)。

        我们做ajax 开发  从界面发送一个请求给服务器,服务器接收到请求,响应数据,响应的数据非常的非常多,一般数据只要在网络上面传递,为了方便解析,我们就要求这个数据要遵守一定的格式。

        传递数据的格式有两种:(1)xml格式(2)json格式

1.xml

        xml是一种数据格式,规定使用ajax客户端与服务器进行交互的时候传递数据的一个标准。必须是后缀为一个.xml格式的文件。

        解析xml是把xml转换成一个dom对象,解析后调用dom方法,放在页面上。

        解析xml格式数据步骤:

                     ①通过js 的xmlHttpRequest 对象中的xhr.responseXML属性接收xml 格式的数据,自动转成dom 对象

                     ②通过dom的一些方法和属性去解析xml 格式的数据。

                     ③然后把解析到的数据写到页面上面来。

        xml  :标记语言,是可以扩展的标记语言
        html :超文本标记语言
        作用:html 是做页面显示;xml 用来做数据传输 (软件的配置文件)
                   html里面的标记都是固定的 ,w3c规定好的;xml 里面的标记是自定义的。名字随便去定义

        xml格式的文件:第一行声明一个xml文档。必须在第一行<?xml version ="1.0" encoding="utf-8" ?>

       xml必须有且仅有一个根元素

             在客户端浏览器(html文件)中,点击事件,从服务器(xxx.php文件)获取数据,数据格式是xml,服务端必须设置一个响应头 header("Content-Type:text/xml;charset=utf-8");。如果服务器返回的是一个xml格式的数据,必须要使用xhr.responseXML这个属性去接受服务器返回的数据,自动转成dom 对象。      var data=xhr.responseXML;//现在data已经变成document 对象。

在php文件中,需要规定服务器返回的文本格式即:

<?php
        /*   header 给客户端发送一个响应头。发送一个响应头给客户端浏览器Content-Type:text/html;charset=utf-8;告诉客户端浏览器,服务端返回的内容类型。 text 返回的是一个文本。 html 格式的文本。

              header('Content-Type:text/html;charset=utf-8');     

       */
              header('Content-Type:text/xml;charset=utf-8');

        /*    我要给客户端返回xml 格式的数据。*/
        $data=file_get_contents("books.xml");   //xml格式的文件
        echo $data;
?>

books.xml格式的文件,即服务器数据传输格式为xml,传输的数据文件

<?xml  version="1.0" encoding="UTF-8"  ?>
<books>
        <book>
              <bookName>坏蛋是怎么练成</bookName>
              <bookAuthor>刘占超</bookAuthor>
              <bookPrice>9.99</bookPrice>
        </book>
        <book>
            <bookName>斗破苍穹</bookName>
            <bookAuthor>鹏鹏</bookAuthor>
            <bookPrice>1块三斤</bookPrice>
        </book>
        <book>
            <bookName>一生遗憾</bookName>
            <bookAuthor>张扬</bookAuthor>
            <bookPrice>36</bookPrice>
        </book>
</books>

2.json

         json 是一种轻量级的数据格式,能够使用更少的字符串代表更多的内容,这种传输方式使用非常多,xml很少。

             发送一个请求,给服务器,服务接收到请求,然后返回的是json 格式的数据,客户端js接收到json格式的数据 ,怎么去解析json 格式的数据?

        解析json格式数据步骤:①我们通过js 的xmlHttpRequest 对象中的xhr.responseText属性接收json 格式的数据。

                                               ②通过js 去解析json 格式的数据。通过eval()或JSON.parse(json)转换成js对象。

                                               ③然后把解析到的数据写到页面上面来。
             js 提供一个函数给我们,可以直接把这个json 格式的字符串转成对象, 这个函数叫做eval();这个函数里面换地一个json 格式的字符串,但是要求这个json 格式的字符串,必须使用() 括起来。

两种方式:直接把json 格式的数据转换成javascript 的对象
                  ①:eval("("+json+")");//此方法常用
                  ②: JSON.parse(json);

服务器数据:

<?php
        header('Content-Type:text/html;charset=utf-8');
        $data=file_get_contents("data.json");
        echo $data;
?>

data.json文件:

{
  "total":99,
  "rows":[ {
      "username":"蔡依婷",
      "age":35,
      "sex":"男",
      "desc":"花花蝴蝶" },
    { "username":"张朝阳",
      "age":22,
      "sex":"弯",
      "desc":"搜狐" },
    { "username":"张扬",
      "age":11,
      "sex":"男",
      "desc":"我就是性格有点张扬"}
  ]
}

3. xml格式与json格式的不同:

       ①xml解析用dom对象的一些方法和属性,json解析是使用js进行解析的。

       ②xml使用xhr.responseXML属性接收服务器的数据,接受的同时把数据变成dom对象;json使用xhr.responseText属性接收服务器的数据,接收后数据为字符串,需要用js中的eval()函数或者JSON.parse(json)将接收到的数据转换成js的对象。

       ③xml格式要求服务端返回的数据给一个响应头header("Content-Type:text/xml;charset=utf-8");json格式不要求,php就是普通的响应头 header("Content-Type:text/html;charset=utf-8")。

       ④xml服务器端提供数据的文件是xxx.xml格式的(需要一个xxx.xml文件);json服务器端提供数据的文件是xxx.json格式的(需要一个xxx.json文件)。 

4.   因为我们跟服务器进行交互,我们要注意性能:
      跟服务器交互的次数越少越好,跟服务器传递的数据越少越好。json是轻量级的数据格式,能够使用更少的字符串代表更多的内容。因此在与服务器进行交互使用过程中,传输的最多的就是json格式,xml格式很少使用。xml主要用于软件的配置文件,以后调用百度、调用微信,返回的还是xml格式的数据。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值