1.获取ajax对象

  new XMLHttpRequest();

  IE6-8: new ActiveXOject("Microsoft.XMLHTTP");

  兼容判断:if(XMLHttpRequest){...}else{...}

2.打开链接:open()

  open(method,url,async):method:请求方式GET/POST,url:请求地址,async:true(异步,默认)/false(同步)

3.发送请求:send()

  如果是POST请求,send方法要带参,带上我们要传输的数据。

  POST请求的话,还要修改请求头,写在open方法后:setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

4.监听状态变化

  onreadystatechange = function(){...}

5.状态判断:readyState==4&&status==200

  readyState:4/3/2/1/0

    0:请求未初始化,open()方法未执行
              1:send()方法未调用
              2:send()方法已经被调用,响应头已经获取,响应头的状态已经返回
              3:部分responseText已经获取
              4:整个请求过程完成

  status:200/404/500

6.responseText:获得字符串形式的响应数据

responseXML:获得 XML 形式的响应数据

注意:1.后端不做跳转,直接返回数据  2.返回的数据类型肯定是字符串  3.使用print,不要使用println(会有换行)  4.有的浏览器会有缓存问题

如何解决浏览器缓存问题:传输的参数加上时间戳 url=“/ajax/checkUser?username=”+username+"&_timer="+new Date().getTime();

  _timer:该参数名只要保证不与其他参数名重复即可

代码演示:原生JS方式检查用户名是否重复

 <!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title>检查用户名是否重复</title>
</head> <body>
用户名:<input type="text" name="username" id="username" />
<br />
<span id="info"></span><br />
<button type="button" id="checkUser" onclick="checkUser()">校验</button>
<!--用ajax完成post请求时,
1.button的类型不能是submit,
submit会有一个浏览器默认事件(即提交后会自动刷新页面)
2.请求头的Content-Type要改变,写在open之后
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
3.send(要传输的数据写在这里)
-->
</body>
<script type="text/javascript">
function checkUser() {
//获取数据
var username = document.getElementById("username").value;
alert(username);
//1.获取ajax对象
var xhr = null;
if(XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if(ActiveXObject) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("你是啥???");
}
//2.open 带参数传输
xhr.open("GET", "/ajax/checkUser?username="+username, true);
//3.send
xhr.send();
//4.监听状态
xhr.onreadystatechange = function() {
if(xhr.status == 200 && xhr.readyState == 4) {
if(xhr.responseText == "false") {
document.getElementById("info").innerHTML="用户名已存在!!";
} else {
document.getElementById("info").innerHTML="用户名可以使用!!";
}
} else {
console.debug("error");
}
}
}
</script> </html>

前端代码

 @WebServlet("/checkUser")
public class checkUserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
System.out.println(username);
if("admin".equals(username)) {
System.out.println("判断结果为true");
response.getWriter().print("false");//不用加ln,会出错
}else {
response.getWriter().print("true");
}
}
}

后端代码

ajax检查用户名重复的更多相关文章

  1. asp.net ajax检查用户名是否存在代码

    原文  asp.net ajax检查用户名是否存在代码 用户注册时,我们经常需要检查用户名是否存在,本文就是实现无刷新验证用户名 打开开发环境VS 2005,新建项目(或打开现有项目),新建一个Web ...

  2. 使用原生Ajax进行用户名重复的检验

    title: 使用原生Ajax进行用户名重复的检验(一) date: 2019-01-21 17:35:15 tags: [JavaScript,Ajax] --- Ajax的复习 距离刚开始学aja ...

  3. 使用ajax验证用户名重复

    继上次的用户注册登录案例之后,对其中的部分功能再做进一步改进.上一版中用户提交表单后才对用户名进行校验,虽然做了回显,但还是感觉功能弱了些.为了能有更好用户体验,不是在用户提交表单后才给提示,而是在用 ...

  4. ajax检查用户名是否存在

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.c ...

  5. SSH+Ajax实现用户名重复检查(二)

    1.另外一种更常用的js表达方式: var user = { inintEvent: function(){ $("input[name='user.User_LogName']" ...

  6. SSH+Ajax实现用户名重复检查(一)

    1.struts.xml设置 <package name="default" namespace="/" extends="json-defau ...

  7. ajax检查用户名

    Ajax实现的效果 究竟Ajax能实现什么功能呢?今天下午学习了一下Ajax,现在跟大家分享一下我的学习心得.Ajax是什么?工作机制又是什么?可能不大准确,只是我个人看了视频学习后的一点点看法. A ...

  8. AJAX异步检查,检查用户名是否存在

    AJAX异步检查,检查用户名是否存在 写法一: var xmlHttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, ...

  9. vue检查用户名是否重复

    前端函数如下,js方法代码无需更改,前端代码逻辑在components\common\lab_header.vue 只需要修改components\axios_api\http.js中调用的后端地址 ...

随机推荐

  1. 使用java自带线程池

    java提供自带的线程池,而不需要自己去开发一个自定义线程池了. 线程池类ThreadPoolExecutor在包java.util.concurrent下   ThreadPoolExecutor ...

  2. nmap探测大网络空间中的存活主机

    前言 扫描大网络空间中的存活主机 实现 nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 -oX nmap_output.x ...

  3. json 格式化输出

    C#格式化JSON字符串 很多时候我们需要将json字符串以 {     "status": 1,     "sum": 9 }这种方式显示,而从服务端取回来的 ...

  4. 三节课MINI计划第五周

    一.任务及干货 二.作品 (一)小组分工 (二)社群运营方案

  5. leetcode1186 Maximum Subarray Sum with One Deletion

    思路: 最大子段和的变体,前后两个方向分别扫一遍即可. 实现: class Solution { public: int maximumSum(vector<int>& arr) ...

  6. spring 中常用的两种事务配置方式

    引用:http://blog.csdn.net/qh_java/article/details/51811533 引用:http://www.cnblogs.com/rushoooooo/archiv ...

  7. vue报错:Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.

    在.vue文件中引入了 element-ui 的 table 和 pagination 组件后,报错:Component template should contain exactly one roo ...

  8. XDomainRequest IE8&amp;IE9 cors 跨域通讯的处理方法

       版权声明:避免百度一下通片同一篇文章,未经博主允许不得转载.本博客作为笔记使用,正确性请自行验证. https://blog.csdn.net/u014071104/article/detail ...

  9. Win10 自定义鼠标右键菜单

    1. 点击文件鼠标右键显示软件 1.1 步骤 win+R输入regedit进入注册表 定位到HKEY_CLASSES_ROOT\*\shell下 在shell创建一个你想要的右键文件 例如:Kinok ...

  10. Django多对多关系建立及Form组件

    目录 Django多对多关系 1.创建方式一全自动 2.创建方式二纯手撸 3.半自动(推荐使用) forms校验组件 使用forms组件实现注册功能 form常用字段和插件 数据校验 钩子函数 HOO ...