黑马程序员技术交流社区

标题: ajax&json学习 [打印本页]

作者: tanglong    时间: 2019-3-28 13:42
标题: ajax&json学习
Ajax&Json

1. 能够理解异步的概念

- Ajax:    用于创建交互式网页的开发技术
  是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术

2. 能够了解原生js的ajax

一定不要去敲这个代码!!!重要的是理解这种客户端网络请求的步骤以及思路!

- 创建异步对象

    //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");
                }
   

- 建立连接

    xmlhttp.open("GET","ajaxServlet?username=tom",true);

- 发送请求

    xmlhttp.send();//post请求参数放在send()

- 接收数据

    xmlhttp.onreadystatechange=function()
    {
        //判断readyState就绪状态是否为4,判断status响应状态码是否为200
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
           //获取服务器的响应结果
            var responseText = xmlhttp.responseText;
            alert(responseText);
        }
    }

3. 能够使用jQuery的$.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"//设置接受到的响应数据的格式
                });



4.:happy: 能够使用jQuery的$.get()进行访问

$.get(url [data], [callback],[type])

     $.get("ajaxServlet",{"username":"rose"},function (data) {
                    alert(data);
                },"text");

5. :happy:能够使用jQuery的$.post()进行访问

$.post(url, [data], [callback], [type])

     $.post("ajaxServlet",{username:"rose"},function (data) {
                    alert(data);
                },"text");



6. 能够掌握json的对象&数组数据格式

- 对象:  {"key":"value","key1":"value1",...}
  数组:     ["test": {"key":"value","key1":"value1",...},"test1":[{},{},{}]]
- 注意:json里面的key一定要有双引号,不要写特殊符号
- 值符合八大基本类型,对象,数组

获取值的操作:

:happy:json对象.键名

json对象["键名"]

:happy:数组对象[索引]

遍历

7. 能够使用json转换工具Jackson进行json格式字符串的转换

- 核心对象:ObjectMapper
- writeValue(file/outputStream/wirter,obj)
- wirteValueAsString(obj)输出一个json字符串
- readValue(string,class)将字符串json转成java对象

8. 能够完成用户名是否存在案例

- 客户端
  - 编写前台JavaScript代码
        $(function(){
            //1. 获取第一个输入框元素
            //2. 给该元素绑定blur离焦事件
            //3. 发起异步请求(username获取输入框输入的value值)val()
            //{"userExsit":true,"msg":"此用户名太受欢迎,请更换一个"}
            $.get("findUserServlet",{"username":username},function(data){
                //4. 判断userExsit是否为true
                if(data.userExsit){
                    //5. 显示用户名存在
                }else{
                    //6. 显示用户名不存在
                }
            },"json");
        })
  前台页面实现完成后用浏览器打开,按F12开发者工具查看页面是否报错,看console控制台是否报错!
- 服务器
  - 编写findUserServlet
  - 步骤:
        //1. 获取username参数
        String username = request.getParamter("username");
        //2. 查询数据库判断是否有该用户名
        //3. 创建UserService
        //4.调用User user = UserService.findUser(username)--->UserDao.findUser(username)
        //select *  from  user where username = ?
        try{
        User user = JDBCTemplate.queryForObject(sql,new BeanRowPerperty(User)(User.class),username)
            return user;
        }catch(Exception e){
            return null;
        }
        ObjectMapper mapper = new ObjectMapper();
        Map map = new HashMap();
        //5. 判断user是否为空
        if(user ==null){
            //没有查询到
            map.put("userExist",false);
            map.put("msg","用户名可用");
            mapper.writeValueAsString(IO,map);
        }else{
            //查询到了
            map.put("userExist",true);
            map.put("msg","用户名不可用");
            mapper.writeValueAsString(IO,map);
        }
            
        
- 掌握前台页面Debug使用







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2