• ajax和json


    一、json
    1、 json是什么
    它是js提供的一种数据交换格式!
    2、json的语法
       {}:是对象!
       属性名必须使用双引号括起来!单引不行!!!
       属性值: null、数值、字符串、 数组:使用[]括起来、boolean值:true和false
    eg:
    var person = {"name":"zhangSan", "age":18, "sex":"male"};
    3、json与xml比较
    * 可读性:XML胜出
    * 解析难度:JSON本身就是JS对象(主场作战),所以简单很多
    * 流行度:XML已经流行好多年,但在AJAX领域,JSON更受欢迎。
    4、把java对象转成json对象
    * JSONObject --> Map
        > toString();
        > JSONObject map = JSONObject.fromObject(person):把对象转换成JSONObject对象
    * JSONArray --> List
        > toString()
        > JSONArray jsonArray = JSONObject.fromObject(list):把list转换成JSONArray对象
    二、ajax
    1、ajax是什么
    异步请求,局部刷新
    2、异步交互和同步交互
      * 同步:
        > 发一个请求,就要等待服务器的响应结束,然后才能发第二个请求!中间这段时间就是一个字“卡”
        > 刷新的是整个页面!
      * 异步:
        > 发一个请求后,无需等待服务器的响应,然后就可以发第二个请求!
        > 可以使用js接收服务器的响应,然后使用js来局部刷新!
    3. ajax应用场景
      * 百度的搜索框
      * 用户注册时(校验用户名是否被注册过)
     
    4. ajax的优缺点
      优点:
      * 异步交互:增强了用户的体验!
      * 性能:因为服务器无需再响应整个页面,只需要响应部份内容,所以服务器的压力减轻了!
     
      缺点:
      * ajax不能应用在所有场景!
      * ajax无端的增多了对服务器的访问次数,给服务器带来了压力!
     
    5、ajax发送异步请求(四步操作)
     
    第一步(得到XMLHttpRequest)
      * ajax其实只需要学习一个对象:XMLHttpRequest,如果掌握了它,就掌握了ajax!!!
      * 得到XMLHttpRequest
        > 大多数浏览器都支持:var xmlHttp = new XMLHttpRequest();
        > IE6.0:var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        > IE5.5以更早版本的IE:var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
     
      * 编写创建XMLHttpRequest对象的函数
      function createXMLHttpRequest() {
          try {
              return new XMLHttpRequest();
          } catch(e) {
              try {
              return new ActiveXObject("Msxml2.XMLHTTP");
          } catch(e) {
              try {
                  return new ActiveXObject("Microsoft.XMLHTTP");
              } catch(e) {
                  alert("哥们儿,你用的是什么浏览器啊?");
                  throw e;
              }
          }
          }
      }
     
    2. 第二步(打开与服务器的连接)
      * xmlHttp.open():用来打开与服务器的连接,它需要三个参数:
        > 请求方式:可以是GET或POST
        > 请求的URL:指定服务器端资源,例如;/day23_1/AServlet
        > 请求是否为异步:如果为true表示发送异步请求,否则同步请求!
      * xmlHttp.open("GET", "/day23_1/AServlet", true);
     
    3. 第三步(发送请求)
      * xmlHttp.send(null):如果不给可能会造成部份浏览器无法发送!
        > 参数:就是请求体内容!如果是GET请求,必须给出null。
     
    4. 第四步()
      * 在xmlHttp对象的一个事件上注册监听器:onreadystatechange
      * xmlHttp对象一共有5个状态:
        > 0状态:刚创建,还没有调用open()方法;
        > 1状态:请求开始:调用了open()方法,但还没有调用send()方法
        > 2状态:调用完了send()方法了;
        > 3状态:服务器已经开始响应,但不表示响应结束了!
        > 4状态:服务器响应结束!(通常我们只关心这个状态!!!)
      * 得到xmlHttp对象的状态:
        > var state = xmlHttp.readyState;//可能是0、1、2、3、4
      * 得到服务器响应的状态码
        > var status = xmlHttp.status;//例如为200、404、500
      * 得到服务器响应的内容1
        > var content = xmlHttp.responseText;//得到服务器的响应的文本格式的内容
        > var content = xmlHttp.responseXML;//得到服务器的响应的xml响应的内容,它是Document对象了!
     
      xmlHttp.onreadystatechange = function() {//xmlHttp的5种状态都会调用本方法
          if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {//双重判断:判断是否为4状态,而且还要判断是否为200
              // 获取服务器的响应内容
          var text = xmlHttp.responseText;
          }
      };
     
     
  • 相关阅读:
    yum只下载不安装的方法
    在VS2008下编译Qt4.4.x
    Linux sh脚本异常:bad interpreter: No such file or directory
    动态链接库dll,静态链接库lib, 导入库lib 转
    Accumulation Buffer(累积缓存)
    mysql中ip和整数的转换
    开车撞人了!
    windows 下getc()返回0x1A表示EOF
    NPC问题
    关于普华永道、麦肯锡和IBM的笑话
  • 原文地址:https://www.cnblogs.com/beanjk/p/11305602.html
Copyright © 2020-2023  润新知