jQuery×Ajax

jquery提供多个与ajax有关的方法,通过jquery ajax方法,能够使用HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML或JSON,同时能够把接收的数据更新到DOM对象。代替XMLHttpRequest,但其实jquery还是封装的异步对象。

(1)$.ajax()

$.ajax()是jquery中ajax请求的核心方法,所有的其他方法都是在内部使用此方法。

语法: $.ajax({key: value, key: value, ...})

参数是json格式。其中key是定义好的,需要开发人员给key赋值,表示ajax请求必须的参数。

  • url:服务器地址,例如某个servlet的访问地址。 queryProvinceServlet

  • type:请求方法,get、post。默认是get。不区分大小写

  • data:提交的请求数据,可以是string、数组、json类型的。推荐使用json格式

    ​ 如:data:{name: "李四", age: 20}

    ​ jquery在发送请求时,会把json中的key作为请求的参数使用,key对应的值作为参数数据。

    ​ 转为结果:http://localhost:8080/myweb/queryProvinceServlet?name=李四&age=20

  • dataType:数据格式,可以是html、text、xml、json等,表示发起请求后,希望服务器端返回的数据格式。jquery可以尝试使用对应格式处理返回的数据。比如指定dataType: json表示希望服务器返回的是json格式数据。然后jquery把json数据转为json对象。

    服务器端代码可以获取到dataType的内容

    例如:请求中dataType: "json",jquery发起请求后,
    	在请求头中Accept: application/json, text/javascript, */*; q=0.01
    	
    	如果dataType: "text",则请求头中Accept为text/plain
    
  • success:函数function,当服务器返回数据,jquery处理完数据后,执行这个函数,等同于异步对象的readyState===4&&status===200 的情况。

    例如:success:function(resp) {code}
    	resp 是自定义形参,相当于resp = xhr.responseText
    
  • error:请求错误时执行的函数

  • contentType:请求的参数数据格式,如application/json这个内容可以不写

  • async:布尔值,表示请求是同步还是异步。默认是true,表示异步;false表示同步。

$.ajax(
	{
		url: "queryProvinceServlet",
		type: "get",
		data: {"name": "李四", "age": 20},
        dataType: json,
        success: function(resp) {
            //code: 更新dom对象
        },
        error: function() { alert("请求错误") };
	}
)
(2)$.get()

$.get()函数就是执行get请求方式的ajax

语法:$.get(url, 请求参数, success函数, dataType)

$.get("queryName",
      {"proid": 1}, 
      function(resp) {
    	获取省份名称
		},
      "text"
     )
(3)$.post()

$.post()函数就是执行post请求方式的ajax

语法:$.post(url, 请求参数, success函数, dataType)

$.p("queryName",
      {"proid": 1}, 
      function(resp) {
    	获取省份名称
		},
      "text"
     )
6、使用ajax级联查询

思路:有两个数据库的查询
1.查询所有的省份名称和id;
2.根据提交的省份id,查询city表,得到城市列表

有两个servlet接收请求,一个查询所有的省份;一个接收省份id的参数,查询省份对应的城市列表。
数据格式:json
发起请求使用$.ajax, $.get, $.post
事件:onChange()

实现步骤:

  1. 数据表province(获取全部的id和name列的值)

    city表根据provinceid的值,得到id和name列

  2. 创建web应用,加入mysql驱动的jar包和Jackson的jar包

  3. 创建实体类,Province、City

  4. 创建Dao类,QueryDao类,有两个方法

  5. 创建Servlet,一个是查询所有省份名称,一个是查询城市列表

  6. 创建jsp,发起两个ajax请求

遇到的问题:

1、还是数据库连接的问题
	注意jar包的版本,同时注意URL和创建驱动的写法
2、引入jquery.js本地文件的时候,报404错误。所以这里不使用本地的资源
	<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐