Ajax(初识到实战)

àì夳堔傛蜴生んèń 2024-04-17 06:26 191阅读 0赞

在说Ajax前,我们可以考虑一下注册页面:

没有Ajax的时候,注册页面如果需要判断用户是否存在,需要提交表单的时候才可以知道自己的用户名有没有重复,如果网速很慢,在提交表单的时候,咱们什么都干不了。

有了Ajax,在注册的时候,输入完一个用户名,在输别的选项的时候,右边就能够提示我们用户名已经存在或者成功了,看上去只是单纯的实现了提示,其实底层就是在提交表单前,便能够访问数据库,判断我们输入的信息和数据库信息是否重复,这个就是Ajax神奇的地方。Ajax不仅可以写在html页面也能够写在jsp页面。

简易的Ajax实现:

网页(模拟注册界面,只有用户名,使用Ajax我们需要导入jq包)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script type="text/javascript">
  7. function checkName(){
  8. //接收用户名
  9. var name = document.getElementById("name").value;
  10. //判断用户名长度是否大于6(JavaScript、jQuery 客户端验证)
  11. if(name == null || name.length <=6){
  12. document.getElementById("nametip").innerHTML="用户名长度必须大于6";
  13. return;
  14. }
  15. //判断用户名是否可用(Ajax 服务器端验证)
  16. //1.创建XMLHttpRequest对象
  17. var xhr = new XMLHttpRequest();
  18. //2.和服务器端建立好连接
  19. xhr.open("get","example1.jsp?name="+name);
  20. //3.指定回调函数
  21. xhr.onreadystatechange = function(){
  22. //获取服务器的返回值
  23. var result = xhr.responseText;
  24. //将服务器端返回值输出
  25. document.getElementById("nametip").innerHTML = result;
  26. }
  27. //4.真正发送出请求
  28. xhr.send(null)
  29. }
  30. </script>
  31. </head>
  32. <body>
  33. <form action="" method="post" >
  34. 姓名1<input type="text" name="name" id="name" onblur="checkName()"><span id="nametip"></span> <br>
  35. 密码2<input type="text" name="pwd" id="pwd"><br>
  36. 密码3<input type="text" name="repwd" id="repwd"><br>
  37. <input type="submit" value="提交">
  38. </form>
  39. </body>
  40. </html>

模拟服务端:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. <%
  8. String name=request.getParameter("name");
  9. byte[]bytes=name.getBytes("iso-8859-1");
  10. name=new String(bytes,"utf-8");
  11. boolean flag=true;
  12. if(name.indexOf("lht")>=0){
  13. flag=false;
  14. }
  15. // response.setContentType("text/html;charset=utf-8");
  16. if(flag){
  17. out.println("成功");
  18. }else{
  19. out.println("用户名重复");
  20. }
  21. %>
  22. </body>
  23. </html>

练习二:根据区号 判断出省份和城市:

  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: Administrator
  4. Date: 2019/07/19
  5. Time: 14:23
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <html>
  10. <head>
  11. <title>Title</title>
  12. <script type="text/javascript">
  13. var xhr;
  14. function getInfo(){
  15. //接收区号
  16. var code = document.getElementById("code").value;
  17. //判断用户名是否可用(Ajax 服务器端验证)
  18. //1.创建XMLHttpRequest对象
  19. createXMLHttpRequest();
  20. //2.和服务器端建立好连接
  21. xhr.open("post","/myAjax2/servlet/CodeServlet");
  22. xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  23. //3.指定回调函数
  24. xhr.onreadystatechange = function(){
  25. if(xhr.readyState ==4 ){
  26. if(xhr.status ==200){
  27. //获取服务器的返回值
  28. var result = xhr.responseText;
  29. //将服务器端返回值输出
  30. //alert(result);
  31. var arr = result.split(",");
  32. document.getElementById("province").value =arr[0];
  33. document.getElementById("city").value=arr[1];
  34. }else{ //404 500
  35. alert(xhr.status+ xhr.statusText);
  36. }
  37. }
  38. }
  39. //4.真正发送出请求
  40. //xhr.send(null);
  41. xhr.send("code="+code);
  42. }
  43. function createXMLHttpRequest(){
  44. if(window.ActiveXObject){//ie 6,7,8 9,10,11
  45. //
  46. xhr = new ActiveXObject("Microsoft.XMLHTTP");
  47. }else{//other
  48. xhr = new XMLHttpRequest();
  49. }
  50. }
  51. </script>
  52. </head>
  53. <body>
  54. <form action="">
  55. 区号<input type="text" name="code" id="code" onblur="getInfo()"><br>
  56. 省份<input type="text" name="province" id="province" ><br>
  57. 城市<input type="text" name="city" id="city"><br>
  58. <input type="submit" value="提交">
  59. </form>
  60. </body>
  61. </html>

服务端:

  1. package com.bjsxt.servlet;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.http.HttpServlet;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import java.io.IOException;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. public class CodeServlet extends HttpServlet {
  10. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  11. this.doGet(request,response);
  12. }
  13. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  14. //1.接收区号
  15. String code = request.getParameter("code");
  16. //2.根据区号获取省份和城市
  17. Map<String,String> map = new HashMap<String,String>();
  18. map.put("010","北京,北京");
  19. map.put("0351","山西,太原");
  20. map.put("0311","河北,石家庄");
  21. map.put("0451","黑龙江,哈尔滨");
  22. map.put("024","辽宁,沈阳");
  23. String result = map.get(code);
  24. if(result == null){
  25. result = "error1,error2";
  26. }
  27. //3.返回结果
  28. response.setContentType("text/html;charset=utf-8");
  29. response.getWriter().println(result);
  30. }
  31. }

练习三:优化练习二的代码:

只需要修改jsp页面部分:

post请求:

  1. <script>
  2. $(function(){
  3. $("#code").blur(function(){
  4. var code=$("#code").val();
  5. $.post("/myAjax/servlet/CodeServlet",{"code":code},function (result) {
  6. var arr=result.split(",");
  7. $("#province").val(arr[0]);
  8. $("#city").val(arr[1]);
  9. })
  10. })
  11. })
  12. </script>

get请求:

  1. <script>
  2. $(function(){
  3. $("#code").blur(function(){
  4. var code=$("#code").val();
  5. $.get("/myAjax/servlet/CodeServlet",{"code":code},function(result){
  6. var arr=result.split(",");
  7. $("#province").val(arr[0]);
  8. $("#city").val(arr[1]);
  9. })
  10. })
  11. })
  12. </script>

再进行简化

  1. <script>
  2. $(function(){
  3. $("#code").blur(function(){
  4. var code=$("#code").val();
  5. $.ajax({
  6. url:"/myAjax/servlet/CodeServlet",
  7. type:"post",
  8. data:{"code":code},
  9. success:function(result){
  10. var arr=result.split(",");
  11. $("#province").val(arr[0]);
  12. $("#city").val(arr[1]);
  13. }
  14. })
  15. })
  16. })
  17. </script>

JSON的几种格式练习:

  1. <script>
  2. $(function(){
  3. //JSON格式1:json对象
  4. var person = {"name":"王五","age":25,"wife":null};//JSON对象
  5. $("#msg").append(person.name)
  6. //JSON格式2:JSON数组
  7. var arr= ["HTML","CSS","JavaScript"];
  8. $("#msg2").append(arr[0]+"<br>")
  9. .append(arr[1]+"<br>")
  10. .append(arr[2]+"<br>");
  11. //JSON格式3:JSON对象数组
  12. var users=[{"id":1,"username":"admin",password:"admin"},
  13. {"id":2,"username":"鹿晗","password":"luhan"},
  14. {"id":3,"username":"吴京",password:"wujing"}
  15. ];
  16. $("#msg3").append(users[0].id);
  17. $("#msg3").append(users[1].username)
  18. $("#msg3").append(users[0].password)
  19. //JSON格式4:不规则的JSON
  20. var china ={name:"中国",
  21. provinces:[
  22. {name:"黑龙江省",cities:{city:["哈尔滨","齐齐哈尔"]}},
  23. { name:"河北省",cities:{city:["石家庄","张家口","承德"]}}
  24. ]
  25. };
  26. $("#msg4").append(china.name);
  27. $("#msg4").append(china.provinces[0].name);
  28. $("#msg4").append(china.provinces[1].cities.city[2]);
  29. //JSON对象和JSON字符串之间的转换
  30. //var person2 = {"name":"王五","age":25,"wife":null};
  31. var person2 = '{"name":"王五","age":25,"wife":null}';
  32. alert("person2str"+person2);
  33. eval("var p="+person2);
  34. alert(p);
  35. //JSON STR ---JSON OBJ
  36. //var person3 = JSON.parse(person2);
  37. eval("var person3="+person2);
  38. //var person3 = eval(person2);
  39. //var person3 = eval("("+person2+")");
  40. //alert(eval("3*4+2"));
  41. alert(person3.name);
  42. //json obj ----json str
  43. var person4 = JSON.stringify(person3);
  44. alert(person4);
  45. })
  46. </script>

JSON,Ajax三级菜单:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. <style type="text/css">
  6. select{
  7. width:300px;
  8. height:30px;
  9. }
  10. #showdiv{
  11. width:920px;
  12. margin:auto;
  13. margin-top:200px;
  14. }
  15. </style>
  16. <script type="text/javascript" src="/myAjax/jq/jquery-1.9.1.js"></script>
  17. <script>
  18. $(function(){
  19. $.ajax({
  20. type:"get",
  21. url:"/myAjax/servlet/AreaServlet?parentId=0",
  22. success:function (result) {
  23. eval("var arr="+result);
  24. str="";
  25. for(var i=0;i<arr.length;i++) {
  26. str += '<option value="' + arr[i].areaId + '" >' + arr[i].areaName + '</option>';
  27. }
  28. $("#province").html(str);
  29. getCity();
  30. }
  31. })
  32. })
  33. function getCity() {
  34. var areaId = $("#province").val();
  35. $.ajax({
  36. type: "post",
  37. data: {"parentId": areaId},
  38. url: "/myAjax/servlet/AreaServlet",
  39. success: function (result) {
  40. eval("var arr=" + result);
  41. str = "";
  42. for (var i = 0; i < arr.length; i++) {
  43. str += '<option value="' + arr[i].areaId + '">' + arr[i].areaName + '</option>';
  44. }
  45. $("#city").html(str);
  46. getCounty();
  47. }
  48. })
  49. }
  50. function getCounty(){
  51. var areaId=$("#city").val();
  52. $.ajax({
  53. url:"/myAjax/servlet/AreaServlet",
  54. type:"post",
  55. data:{"parentId":areaId},
  56. success:function(result){
  57. eval("var arr="+result);
  58. str="";
  59. for(var i=0;i<arr.length;i++){
  60. str+='<option value="'+arr[i].areaId+'">'+arr[i].areaName+'</option>';
  61. }
  62. $("#county").html(str);
  63. }
  64. })
  65. }
  66. </script>
  67. </head>
  68. <body>
  69. <div id="showdiv">
  70. <select name="province" id="province" onchange="getCity()">
  71. </select>
  72. <select name="city" id="city" onchange="getCounty()">
  73. </select>
  74. <select name="county" id="county">
  75. </select>
  76. </div>
  77. </body>
  78. </html>

Servlet

  1. package com.bjsxt.servlet;
  2. import com.bjsxt.dao.AreaDao;
  3. import com.bjsxt.entity.Area;
  4. import com.google.gson.Gson;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import java.io.IOException;
  10. import java.util.List;
  11. public class AreaServlet extends HttpServlet {
  12. @Override
  13. protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  14. int parentId=Integer.parseInt(request.getParameter("parentId"));
  15. //查询某个id的地区,封装到areaList
  16. AreaDao areaDao=new AreaDao();
  17. List<Area>areaList=areaDao.getAreaInfo(parentId);
  18. //Gson将集合转换为Json字符串
  19. Gson gson=new Gson();
  20. String str=gson.toJson(areaList);
  21. //解决响应中文乱码的问题
  22. response.setContentType("text/html;charset=utf-8");
  23. response.getWriter().println(str);
  24. }
  25. }

发表评论

表情:
评论列表 (有 0 条评论,191人围观)

还没有评论,来说两句吧...

相关阅读

    相关 jQuery的ajax

        前面有一篇博文,写的是ajax请求时,[返回json字符串和json数组][json_json]的场景,今天,将原始的ajax修改为jQuery版的ajax。

    相关 Ajax

    1.Ajax简介 异步javascript和xml(JSON) Ajax属于客户端和服务端交互的一项技术 ![这里写图片描述][SouthEast] 原有交互模式

    相关 Ajax

    一. 概述 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 不是新的编程语言,而是一...