AJAX

实现方式

  1. 原生的JS实现方式

      //1.创建核心对象
    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    } //2. 建立连接
    /*
    参数:
    1. 请求方式:GET、POST
    * get方式,请求参数在URL后边拼接。send方法为空参
    * post方式,请求参数在send方法中定义
    2. 请求的URL:
    3. 同步或异步请求:true(异步)或 false(同步) */
    xmlhttp.open("GET","ajaxServlet?username=tom",true); //3.发送请求
    xmlhttp.send(); //4.接受并处理来自服务器的响应结果
    //获取方式 :xmlhttp.responseText
    //什么时候获取?当服务器响应成功后再获取 //当xmlhttp对象的就绪状态改变时,触发事件onreadystatechange。
    xmlhttp.onreadystatechange=function()
    {
    //判断readyState就绪状态是否为4,判断status响应状态码是否为200
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    //获取服务器的响应结果
    var responseText = xmlhttp.responseText;
    alert(responseText);
    }
    }
  2. JQeury实现方式

    1. $.ajax()

      语法:$.ajax({键值对})

       //使用$.ajax()发送异步请求
      $.ajax({
      url:"ajaxServlet1111" , // 请求路径
      type:"POST" , //请求方式
      //data: "username=jack&age=23",//请求参数
      data:{"username":"jack","age":23},
      success:function (data) {
      alert(data);
      },//响应成功后的回调函数
      error:function () {
      alert("出错啦...")
      },//表示如果请求响应出现错误,会执行的回调函数 dataType:"text"//设置接受到的响应数据的格式
      });
    2. $.get():发送get请求

      • 语法:$.get(url, [data], [callback], [type])

      • 参数:

        • url:请求路径
        • data:请求参数
        • callback:回调函数
        • type:响应结果的类型
    3. $.post():发送post请求

      • 语法:$.post(url, [data], [callback], [type])

      • 参数:

        • url:请求路径
        • data:请求参数
        • callback:回调函数
        • type:响应结果的类型

JSON

语法

  1. 基本规则

    • 键用引号(单双都行)引起来,也可以不使用引号
    • 值的取值类型:
      1. 数字(整数或浮点数)
      2. 字符串(在双引号中)
      3. 逻辑值(true 或 false)
      4. 数组(在方括号中) {"persons":[{},{}]}
      5. 对象(在花括号中) {"address":{"province":"陕西"....}}
      6. null
      • 数据由逗号分隔:多个键值对由逗号分隔
      • 花括号保存对象:使用{}定义json 格式
      • 方括号保存数组:[]
  2. 获取数据:
    1. json对象.键名

    2. json对象["键名"]

    3. 数组对象[索引]

    4. 遍历

       //1.定义基本格式
      var person = {"name": "张三", age: 23, 'gender': true}; var ps = [{"name": "张三", "age": 23, "gender": true},
      {"name": "李四", "age": 24, "gender": true},
      {"name": "王五", "age": 25, "gender": false}]; //获取person对象中所有的键和值
      //for in 循环
      /* for(var key in person){
      //这样的方式获取不行。因为相当于 person."name"
      //alert(key + ":" + person.key);
      alert(key+":"+person[key]);
      }*/ //获取ps中的所有值
      for (var i = 0; i < ps.length; i++) {
      var p = ps[i];
      for(var key in p){
      alert(key+":"+p[key]);
      }
      }

JSON数据和Java对象的相互转换

  • JSON解析器:

    • 常见的解析器:Jsonlib,Gson,fastjson,jackson(Spring MVC)

      以下使用jackson

  • JSON转为Java对象

    1. 导入jackson的相关jar包
    2. 创建Jackson核心对象 ObjectMapper
    3. 调用ObjectMapper的相关方法进行转换 readValue(json字符串数据,Class)
  • Java对象转换JSON

    1. 导入jackson的相关jar包
    2. 创建Jackson核心对象 ObjectMapper
    3. 调用ObjectMapper的相关方法进行转换
      1. 转换方法:

        • writeValue(参数1,obj)

          参数1:

          • File:将obj对象转换为JSON字符串,并保存到指定的文件中
          • Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
          • OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
        • writeValueAsString(obj):将对象转为JSON字符串

      2. 注解:

        1. @JsonIgnore:排除属性。

        2. @JsonFormat:属性值得格式化

          @JsonFormat(pattern = "yyyy-MM-dd")

      3. 复杂java对象转换

        1. List:数组
        2. Map:对象格式一致
  • 细节

    服务器响应的数据,在客户端使用时,要想当做 JSON 数据格式使用。有两种解决方案:

    1. $.get(type):将最后一个参数 type 指定为"json"
    2. 在服务器端设置MIME类型 response.setContentType("application/json;charset=utf-8")

JavaWeb笔记(九)Ajax&Json的更多相关文章

  1. 超全面的JavaWeb笔记day23<AJAX>

    AJAX AJAX概述 1 什么是AJAX AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言 ...

  2. jQuery学习笔记之Ajax用法详解

    这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...

  3. 【笔记】AJAX基础

    [笔记]AJAX基础 Django AJAX  知识储备:JSON 什么是 JSON JSON 是轻量级的文本数据交换格式 JSON 独立于语言和平台.JSON 解析器和 JSON 库支持许多不同的编 ...

  4. 学习笔记:AJAX 跨域问题

    学习笔记:AJAX 跨域问题 AJAX 跨域是浏览器的问题. 只要 xhr 请求,不同的域名就会出现 AJAX 跨域问题. JSONP 是一要简单方式,但是有很多弊端,需要修改服务端代码. JSONP ...

  5. jQuery:自学笔记(5)——Ajax

    jQuery:自学笔记(5)——Ajax 使用Ajax快捷函数 说明 出于简化AJAX开发工作的流程,jQuery提供了若干了快捷函数. 实例 1.显示 test.php 返回值(HTML 或 XML ...

  6. bootstrap-data-target触发模态弹出窗元素的data使用 data-toggle与data-target的作用 深入ASP.NET MVC之九:Ajax支持 Asp.Net MVC4系列--进阶篇之AJAX

    bootstrap-data-target触发模态弹出窗元素的data使用 时间:2017-05-27 14:22:34      阅读:4479      评论:0      收藏:0      [ ...

  7. struts2 + ajax + json的结合使用,实例讲解

    struts2用response怎么将json值返回到页面javascript解析,这里介绍一个struts2与json整合后包的用法. 1.准备工作 ①ajax使用Jquery:jquery-1.4 ...

  8. AJAX,JSON搜索智能提示

    效果 开发结构参考AJAX,JSON用户校验 主要有两个核心文件 1,处理输入字符,进行后台搜索的servlet Suggest.java package org.guangsoft.servlet; ...

  9. php ajax json jquery 记录

    php+jquery+ajax+json简单小例子 <html> <title>php+jquery+ajax+json简单小例子</title> <?php ...

  10. 《MFC游戏开发》笔记九 游戏中的碰撞判定初步&怪物运动简单AI

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9374935 作者:七十一雾央 新浪微博:http:// ...

随机推荐

  1. java设计模式——桥接模式

    一. 定义与类型 定义:将抽象部分与他的具体实现部分分离,使它们都可以独立的变化,通过组合的方式建立两个类之间的联系,而不是继承 类型:结构性. 二. 使用场景 (1) 抽象和具体实现之间增加更多的灵 ...

  2. 第46章 DCMI—OV5640摄像头—零死角玩转STM32-F429系列

    第46章     DCMI—OV5640摄像头 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...

  3. Vue nodejs商城项目-搭建express框架环境

    1.express-project 搭建express框架环境 安装express generator生成器 通过生成器自动创建项目 配置分析 安装 cnpm i -g express-generat ...

  4. django模板层(templates)

    1.基础部分 通过使用模板,就可以在URL中直接调用HTML,它还是松耦合的,灵活性强,而且更容易维护 而且可以将变量通过一定的方式嵌入到HTML中,最终渲染到页面,总的来说基于模板完成了数据与用户之 ...

  5. 一篇SSM框架整合友好的文章(三)

    ###一.SpringMVC理论 它始终是围绕 handler. 数据模型 model. 页面view进行开发的. 运行流程图: 通过mvc配置文件,配置"中央处理器"dispat ...

  6. android动画解析(初级)

    效果图: ObjectAnimator继承自ValueAnimator的,底层的动画实现机制也是基于ValueAnimator来完成的,因此ValueAnimator仍然是整个属性动画当中最核心的一个 ...

  7. 交换机基础配置之stp生成树实验

    实验的要求是以上面的拓扑图为例,查看当前根桥的所在并把三成交换机switch1指定为根桥 我们可以用show spanning-tree来查看stp的信息 输入后会显示两部分 上面一部分为当前交换机自 ...

  8. SpringCloud微服务基础 Eureka、Feign、Ribbon、Zuul、Hystrix、配置中心的基础使用

    1.单点系统架构 传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N ...

  9. macOs 使用Homebrew升级到MySQL 8系列之后,php无法连接解决方法

    当前时间2018-9-28 在使用brew install mysql 默认安装为 MySQL 8,但是使用php连接到数据库之后,出现了这种错误 (Unexpected server respose ...

  10. 《Redis设计与实现》- 复制

    在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡灯需求.Redis提供了复制功能,实现了相同数据多个副本,复制功能作是高可用Redis的基础,深入理解复制 ...