js中的ajax和jquery中的ajax学习笔记

js中的ajax和jquery中的ajax学习笔记

一、JS中的Ajax

ajax:异步访问/局部刷新

1.同步和异步

2.Ajax的运行原理

页面请求---->Ajax引擎----->提交给服务器端

这段时间可以做任何事情

服务器端响应------>Ajax引擎----->触发设置好的事件,执行自定义的js逻辑代码,然后显示页面

js改变页面,其原理是改变的是内存

3.ajax实现

  • 创建ajax引擎
  • 为ajax对象绑定监听
  • 绑定提交地址(get/post)
  • 发送请求
  • 接受响应数据(在监听对象里面接收数据)

    js代码:

    var xmlhttp = new XMLHttpRequest();//1.创建引擎对象
        //2.绑定监听
    xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readeyState == 4&& xmlhttp.Status == 200){
                //5.接受响应数据-----接受服务器响应的数据可以是json格式的数据
                var res = xmlhttp.responseText();
                alert(res);
        }
    }
    
    3.绑定提交地址
    xmlhttp.open("GET","${pageContext.request.contextPath}/AServlet",true);
    4.发送请求
    xmlhttp.send();//里面可以写发送请求的参数
    

    如果是POST请求的时候需要在绑定提交地址和发送请求中间添加一个请求头

    xmlhttp.setRequestHeader(“Content-Type”,”application/x-www.form-urlencoded”);

总结:

所有的异步访问都是通过ajax引擎

js中的ajax和jquery中的ajax学习笔记

二、JSON传递数据(重点)

1.JSON在ajax中数据传递格式

JSON传递数据的一种格式,当使用异步传输的时候,
当服务器响应数据的时候,需要使用一种格式在客户端和服务端进行传递
当服务端响应给客服端的时候响应的是字符串或者xml(ResponseText/ResponseXML),
如果响应一个对象给客户端的时候就不能表示.

2.JSON格式

  • JSON格式

    格式:对象格式:{"key1":obj,"key2":obj,"key3":obj,.....}
         集合/数组格式:[obj,obj,obj,....]
        1)user对象,使用json来表示:
            {"username":"kevin","age":28,"hobby":"打游戏"}
        2)List<User>使用Json来表示:
            [{"username":"cidy"},{"username":"tome","password":"123"}]
    注意:
        json里面的key是字符串,json里面的value是Object
        这两种形式可以相互嵌套,具体怎么嵌套需要根据的自己的业务来
    
  • 如何从JSON里面取数据

    json是js原生的内容,在js里面可以直接取出json里面的数据
        比如在js代码里面:
        1)对象形式:
            //person是json对象
            var person = {"username":"kevin","password":"123","age":28}
            //取age
            alert(person.age);//28
        2)集合形式
                var pesons = [
                              {"usranme":"kevin"},
                              {"username":"tome"},
                             ];
                //取tome
                alert(persons[1].username);//tome
        3)对象里面嵌套集合
                var json = {"key":[{},{},{}]}
                var json = {
                            "username":[
                                        {"name":"kevin"},
                                        {"name":"lishi"},
                                        {"name":"wangwu"},  
                                    ]
                        }
                //取出lishi
              alert(json.username[1].name);//lishi
        4)对象里面的多个key对应value是一个集合,集合里面嵌套对象
                {
                 "param1":[{key:value,key:value},{key:value,key:value}],
                 "param2":[{key:value,key:value},{key:value,key:value}],
                 "param3":[{key:value,key:value},{key:value,key:value}]
               }
        5)混合形式
            {
             "param1":"value1",
             "param2":{},
             "param3":[{key:value,key:value},{key:value,key:value}]
            }
        其实上面取数据也可以叫做对象导航,
        在EL表达式中,我们把数据存储在javaben中的时候也可以像这种形式(对象导航来)取数据
        注意:
            在json里面取数据,如果是集合的形式我们是通过下标来确定位置,然后像java中对象调用方法从而取到自己想要的数据
    
  • json插件

三、jQuery中的Ajax(重点)

    再实际开发中使用下面三种方式:
    $.post(url,[date],[callback],[type]);
    $.get(url,[date],[callback],[type]);
    $.ajax([options]);
  1. .post(url,[date],[callback],[type]) .get(url,[date],[callback],[type])

    - url://请求路径
    - date:把什么数据传递给服务器,可以是json格式(请求参数)
    - callback:服务端成功响应所触发的事件,只有正常成功返回才能执行
    - type:返回的格式,一般我们写json格式或者text格式,其实还有xml,html格式等
    

    思路分析:

    $.get(
            //提交的地址,相当于open里面的其中一个url参数
            "${pageContext.request.contextPath}/ajaxServlet2",
    
            //传递参数,参数的形式可以写成json形式
            {"name":"keivn","age":28},
    
            //服务端成功响应所触发的事件,
            //在ajax中这里相当于xmlhttp.onreadystatechange部分
            //函数里面的参数date表示服务器成功响应给客户端的数据,
            //响应给客户端的数据我们在服务器端可以写成字符串形式的json格式
            //比如:"{\"name\":\"tome\",\"age\":\"29\"}",  
            //需要注意的是不能用单引号,只能用转义字符,因为jquery在进行解析的时候
            //会调用jQuery.parseJSON(json)这个方法进行解析,如果用单引号会出现畸形的
            //json格式的字符串,所谓畸形的json字符串有以下两种:
            //{test: 1} ( test 没有包围双引号)
            //{'test': 1} (使用了单引号而不是双引号)
            //另外,如果你什么都不传入,或者一个空字符串、null或undefined,
            //parseJSON都会返回 null 。
            //这里的名称可以随便取名字
            function (date){
                alert(date);
            }
    
            //type:返回的格式
            //如果服务器端返回的是json格式的字符串,这里我们
            //用text类型进行解析,返回的是json格式的字符串
            //如果使用json进行解析,返回的是json对象,那么我们都可以用json对象导航
            //取出我们想要的数据
            "text"  //“json"
        );
    

    注意:post请求和get请求的写法是一样的,但是jquery中的post请求,他处理了中文问题,在服务器端接受请求数据的时候,不必要写request.setCharacterEncoding(“utf-8”)进行处理乱码,而get请求的时候需要我们先解码,在编码进行处理乱码问题

        String name = request.getParameter("name");
        name = new String (name.getBytes("iso-8859-1"),"utf-8");
    
  2. $.ajax([options])

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100806.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java从入门到精通_学习Java最好的10本书,从入门到精通

    java从入门到精通_学习Java最好的10本书,从入门到精通在当代,学习Java等编程课程的主要方式是视频资源。如果你想学,在网上五分钟之内就可以找到一堆学习视频,瞬间将你的硬盘填满。但是这些课程质量良莠不齐,对于小白来说,的确让人头痛不已。但是,书籍不同。对于书籍而言,它们都是出自业内大牛和资深的大学教授的精心编写,内容好坏与否,有很多同领域的网友都能帮你把关。所以说,如果你选对了学习的书籍,就可以不用担心自己在编程中,埋下错误的种子,同时还可以更深入的…

    2022年7月8日
    16
  • 0xc000007b的解决办法(续)「建议收藏」

    最后更新:2019-3-23请大家首先确定已经按照原文的方法及步骤尝试过,但是还是没有解决问题再来看这篇文章。如果你还没有看过原文,请先看原文:http://blog.csdn.net/VBcom/article/details/6070705看到这里的朋友,应该是看了原文但是没有解决问题。其实这个问题基本上就是由DirectX引起,但是…

    2022年4月15日
    157
  • P2P网贷源码[通俗易懂]

    P2P网贷源码[通俗易懂]急求p2p网贷源码,java语言编写。

    2025年6月8日
    2
  • python3.9多线程_python创建多线程

    python3.9多线程_python创建多线程什么是线程?线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其

    2022年7月28日
    6
  • ubuntu eclipse 乱码「建议收藏」

    ubuntu eclipse 乱码「建议收藏」今天,把windows下的工程导入到了Linux下eclipse中,由于以前的工程代码,都是GBK编码的(Windows下的Eclipse默认会去读取系统的编码,所以Widnwos下的Eclipse的编码为GBK),而Ubuntu默认是不支持GBK编码的。所以,首先我们要先让Ubuntu支持GBK,方法如下:修改/var/lib/locales/supported.d/local文

    2022年5月25日
    36
  • github最受欢迎语言(android开源框架)

    内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新ViewPager图表(Chart)菜单(Menu)浮动菜单对话框空白页滑动删除手势操作RecyclerViewCardColorDrawableSpinner布局模糊效果TabBarAppBar选择器(Picker)跑马灯日历时间主题样式ImageView通知聊天视图Head

    2022年4月13日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号