简述Ajax,以及使用原生js书写Ajax案例

简介: 简述Ajax,以及使用原生js书写Ajax案例

Ajax,这里的第一个字母A值的是asynchronous,意思是异步的,j值的就是JavaScript,第二个a是and,x值的是xml

合在一起就是 异步的javascript和xml


什么是异步的?


跟java中的同步(synchronized)是相反的。什么是同步呢?以前的服务器请求,都必须是第一个请求结束了,第二个请求才能开始,第二个请求结束了,才能开始第三个请求。


什么是异步呢,异步就是第一个请求发出之后,不用等待第一个请求的结果,整个页面不会刷新。第一个请求没有结束的情况下我可以发出第二个请求。

ajax可以实现无刷新技术对服务器的请求。


无刷新,就减少了页面一晃而逝的等待时间,用户的体验会更好,并且有效的利用了带宽资源。


如何实现Ajax呢?


js中有一个核心对象,XmlHttpRequest。这个是ajax的核心类,通过这个对象我们就可以创建ajax并通过他的方法发送请求。

他有两个重要的方法:

open()方法可以跟tomcat服务器上的请求建立连接。

send():让js代码发出reqeust请求。


ajax怎么接受服务器端的响应?


XmlHttpRequest对象有这样的几个属性:


readyState = =0: XmlHttpRequest刚被创建

readyState= =1:XmlHttpRequest准备发出请求

readyState= =2:服务器开始解析请求

readyState= =3:服务器开始做出响应

readyState= =4:响应接收。


status= =400:携带数据有问题

status= =404:没有找到服务器

status= =500:服务器内部出错

status= =200:服务器响应了正常的数据


通过以上这些就可以创建出Ajax 的第一个案例:


例如:注册时候当我们的鼠标光标离开用户名输入框的时候就提示该用户名是否可以注册。

jsp页面和发送Ajax请求的js代码如下所示:

<html>
  <head>
    <title>$Title$</title>
    <script type="text/javascript">
      function doAjax(){
          //1.创建出ajax核心对象XmlHttpRequest
          var xhr=new XMLHttpRequest();
          //2.建立连接,第一参数是请求的类型,第二参数,请求谁。
          var username=document.getElementById("username").value;
          xhr.open("get","${pageContext.request.contextPath}/user/regist.do?name="+username);
          //3.ajax的回调函数,告知xhr做完服务器端事情后,做什么
          xhr.onreadystatechange=function(){
              //表示xhr得到了响应
              if(xhr.readyState==4){
                  //服务器响应的状态码,响应的数据是正常的。
                  if(xhr.status==200){
                      //服务器端响应的0或者1
                      var result=xhr.responseText;
                      if(result=="0"){
                          //在span里面增加错误提醒
                          document.getElementById("mess").innerHTML="用户名已存在";
                      }else{
                          document.getElementById("mess").innerHTML="该用户可以注册";
                      }
                  }
              }
          }
          //4.发出请求
          xhr.send();
      }
    </script>
  </head>
  <body>
  <form>
    用户名:<input type="text" name="username" onblur="doAjax()" id="username"/><span id="mess"></span><br/>
    密码:<input type="password"/><br/>
    <input type="submit"/><br/>
  </form>
  </body>
</html>

请求的服务器端代码为:

此时返回的不再是一个页面,而是通过输出流返回一个字符:

package com.baizhi.action;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/regist")
    //这个方法时接收ajax请求的,响应的数据不是一个jsp,而是一个标记。0:不可以注册,1:可以注册
    public void regist(String name, HttpServletResponse response) throws IOException {
        System.out.println("-------------------"+name+"----------------------");
        //通过response的out给用户响应信息。
        PrintWriter out = response.getWriter();
        //判断收的name是否是zhangsan,是的话就响应0.不是的话就响应1
        if(name.equalsIgnoreCase("zhangsan")){
            out.print("0");
        }else{
            out.print("1");
        }
        out.flush();
    }
}

这样就完成了一个原生js实现的ajax操作,但这其中有太多太多重复性代码了,使用jQuery开发ajax会使我们的代码优化许多,下一篇讲解.

目录
相关文章
|
1月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
34 10
React技术栈-react使用的Ajax请求库实战案例
|
7天前
|
移动开发 前端开发 JavaScript
js之ajax |12-6
js之ajax |12-6
|
1月前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
24 7
React技术栈-react使用的Ajax请求库用户搜索案例
|
9天前
|
移动开发 前端开发 JavaScript
原生JavaScript+canvas实现五子棋游戏_值得一看
本文介绍了如何使用原生JavaScript和HTML5的Canvas API实现五子棋游戏,包括棋盘的绘制、棋子的生成和落子、以及判断胜负的逻辑,提供了详细的代码和注释。
13 0
原生JavaScript+canvas实现五子棋游戏_值得一看
|
2月前
|
Devops 持续交付 测试技术
JSF遇上DevOps:开发流程将迎巨变?一篇文章带你领略高效协同的魅力!
【8月更文挑战第31天】本文探讨了如何在JavaServer Faces(JSF)开发中融入DevOps文化,通过持续集成与部署、自动化测试、监控与日志记录及反馈机制,提升软件交付速度与质量。文中详细介绍了使用Jenkins进行自动化部署、JUnit与Selenium进行自动化测试、ELK Stack进行日志监控的具体方法,并强调了持续改进的重要性。
30 0
|
2月前
|
JavaScript 前端开发 API
从零开始学表单操作,jQuery 与原生 JavaScript 完全指南,带你轻松掌握网页交互关键!
【8月更文挑战第31天】在网页开发中,表单是实现用户互动的关键元素。无论是收集信息、提交数据还是验证输入,都需要对表单进行有效操作。本文档介绍了如何使用原生 JavaScript 和 jQuery 操作表单,包括获取表单元素、读写表单值、处理表单提交及验证等核心功能。jQuery 提供了更简洁的语法和更好的兼容性,但原生 JavaScript 在性能上有优势。选择合适的方法取决于项目需求和个人偏好。下面通过具体示例展示了两种方式的操作方法。
22 0
|
2月前
|
XML JSON 前端开发
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
28 0
|
2月前
|
JavaScript 前端开发 网络协议
|
2月前
|
JavaScript 前端开发 安全
js之AJAX
js之AJAX
25 0
|
4月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作