接触ajax和项目中的实战

关于注册时用户名查重

js代码

function isRepeat(e)
{

//获取name的值
var uname = e.value;

var loginhttp;
//检查浏览器是否支持XMLHttpRequest对象
if(window.XMLHttpRequest) //IE7+版本
{
loginhttp = new XMLHttpRequest();
}else //IE5,IE6
{
loginhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//当readyState的值改变时执行的方法
loginhttp.onreadystatechange=function()
{
if (loginhttp.readyState==4 && loginhttp.status==200)
{
var span = document.getElementsByTagName("span");
span[1].innerHTML="用户名已被使用";
span[1].style.color="red";
}
}

//使用post方法
loginhttp.open("POST","nameIsRepeat.action",true);
loginhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
loginhttp.send("&uname="+uname);
}


关于ajax的异步执行:在做登录页面的时候, 由于自己做的主页需要点击登录才可以看到登录框,所以用form表单直接提交制作登录检测的时候存在问题即登录失败以后仍然会刷新登录页面,导致登录框丢失,只有再次点击登录框才可看到自己用户名密码错误的提示,很不方便,想到用ajax来进行一个判断,点击登录的时候,代码执行顺序应该是先js,再后台,所以我尝试了先用ajax做一个判断,如果用户名密码不匹配,则局部刷新登录框提示,而不是跳转页面,在用户名密码没问题的时候,再去后台进行管理员登录还是用户登录的判断,但是当代码完成,测试时发现其实并不能执行,前端的js代码会直接崩掉,导致不管用户输入什么,会提示密码错误但是直接会登录到用户主页,跟踪调试发现js代码不能使用,经过了解,分析,应该是在ajax的异步执行这里出现了问题,虽然是有先js再后台的顺序,但是当ajax向后台发送数据并在后台做一些操作的时候,此时的操作是异步的,不知道和后台登录的代码谁先谁后,所以导致代码出现冲突,虽然输入的用户密码是错误的,但还是执行了后台的代码,登录了主页,最后放弃了用ajax做登录的想法

流程图如下图,登录后失败后会刷新页面,目前只能做到这里,希望大神们能给点建议应该怎么做,初入java web 很多东西不懂,谢谢各位大神

总结:    ajax是异步执行的,不能与后台同时做同步事件的处理(如登录)

ajax有两种传输数据方式,即get和post,在使用post方法传递时,必须加上loginhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

ajax的send方法传输多个参数时,直接将参数用“+”拼接起来:xmlhttp.send("&a"+a+"&b"+b);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值