Ajax工作流程(原生Ajax)

简介: Ajax工作流程(原生Ajax)

Ajax通过XMLHttpRequest对象实现异步方式在后台发送发送请求。


主要有以下四个步骤:


(1)初始化XMLHttpRequest对象。不同浏览器的差异,需要我们创建一个跨浏览器的对象,并判断XMLHttpRequest对象创建是否成功,如果不成功,则给予提示。


(2)为XMLHttpRequest对象指定一个回调函数,用于对后台返回结果进行处理。


(3)创建一个与服务器的连接,在创建时,需要指定发送请求的方式(GET/POST),以及设置是否采用异步方式发送请求。


(4)向服务器发送请求。


以下是一个用Ajax判断用户名是否正确的样例:


index.jsp文件:


page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
    function getAnswer(username) {
        if(username.value == ""){
            alert("请输入用户名");
            username.focus();
            return;
        }
        else{
            checkUsername("checkusername.jsp?username="+username.value);    //参数已整合到url地址中
        }
    }
    function checkUsername(url) {
        http_request = new XMLHttpRequest();      //初始化XMLHttpRequest对象
        http_request.onreadystatechange = function (){      //回调函数对后台返回结果进行处理
            if(http_request.readyState==4){
                if(http_request.status == 200){
                    alert(http_request.responseText);
                }
                else{
                    alert("地址有误");
                }
            }
        }
        http_request.open("POST",url,true);         //链接服务器
        http_request.send(null);                    //发送请求,这里不用带参数,前面参数已经整合进url中。
    }
</script>
</head>
<body>
<form action="" method="get" name="form1">
    用户名:
    <input type="text" name="username"><br>
    密码:
    <input type="password" name="passwd"><br>
    <input type="submit" value="提交" onclick="getAnswer(this.form.username)">
</form>
</body>
</html>


checkusername.jsp(后台处理):


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    String s = new String(request.getParameter("username").getBytes("ISO-8859-1"),"utf-8");
    if(s.equals("Tom")){
        out.print("此用户已注册");
    }
    else{
        out.print("恭喜你注册成功");
    }
%>


另一种实现方法:(post方法,但传参数)


index.jsp:


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
    function getAnswer(username) {
        if(username.value == ""){
            alert("请输入用户名");
            username.focus();
            return;
        }
        else{
            checkUsername("checkusername.jsp",username);   
        }
    }
    function checkUsername(url,username) {
        http_request = new XMLHttpRequest();      //初始化XMLHttpRequest对象
        var param = "username="+username.value;
        //alert(username.value);
        http_request.onreadystatechange = function (){      //回调函数对后台返回结果进行处理
            if(http_request.readyState==4){
                if(http_request.status == 200){
                    alert(http_request.responseText);
                }
                else{
                    alert("地址有误");
                }
            }
        }
        http_request.open("POST",url,true);         //链接服务器
        http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");       //设置表头
        http_request.send(param);                    //发送请求,这里不用带参数,前面参数已经整合进url中。
    }
</script>
</head>
<body>
<form action="" method="get" name="form1">
    用户名:
    <input type="text" name="username"><br>
    密码:
    <input type="password" name="passwd"><br>
    <input type="submit" value="提交" onclick="getAnswer(this.form.username)">
</form>
</body>
</html>
相关文章
|
6月前
|
敏捷开发 JavaScript 前端开发
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
|
3月前
|
XML JSON 前端开发
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
31 0
|
5月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
6月前
|
JSON 前端开发 JavaScript
JavaScript原生实现AJAX技术详解
【4月更文挑战第22天】本文详细介绍了使用原生JavaScript实现AJAX技术,包括基本原理和步骤。AJAX借助`XMLHttpRequest`对象实现异步通信,允许网页在不刷新情况下与服务器交换数据。文中提供示例展示了如何创建请求、设置回调函数、处理响应数据以及设置请求头和发送不同类型的数据。此外,还讨论了跨域问题及其解决方案,如CORS和JSONP。掌握这些基础知识对前端开发者至关重要,尽管现代框架提供了更高级的抽象。
|
6月前
|
JSON 前端开发 JavaScript
原生 AJAX 详解
原生 AJAX 详解
72 0
|
6月前
|
前端开发 JavaScript API
【uni-app】【基于jQuery Ajax】[sd.js]最新原生完整版for凯哥API版本
【uni-app】【基于jQuery Ajax】[sd.js]最新原生完整版for凯哥API版本
|
6月前
|
存储 移动开发 JavaScript
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
|
前端开发
一篇,让你会写原生ajax
一篇,让你会写原生ajax
49 0
|
JavaScript 前端开发
原生js实现ajax请求带请求头header
原生js实现ajax请求带请求头header
145 0
|
JavaScript 前端开发
js实现原生ajax
js实现原生ajax
211 0