jsp + ajax实现验证用户名
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletEx...
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String fname = request.getParameter("fname");
BookstoreManager bookstoreManager = new BookstoreManager();
request.setCharacterEncoding("GBK");
boolean valid = bookstoreManager.findByBookName(fname);
PrintWriter out = response.getWriter();
out.println(valid);
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
jsp
<script type="text/javascript">
function checkBookExists(){
var fname = document.getElementById("fileName");
if(fname.value.length==""){
alert("书名不能为空!");
fname.focus();
return false;
}else{
doAjax();
}
}
function createXMLHttpRequest(){
//创建XMLHttpRequest对象
if(window.XMLHttpRequest){
//针对FireFox,Mozillar,Opera,Safari,IE7,IE8
xmlhttp = new XMLHttpRequest();
//对某些特定版本的mozillar浏览器的bug进行修正
if(xmlhttp.overrideMineType){
xmlhttp.overrideMineType("text/xml");
}
}else if(window.ActiveXObject){
//针对IE5,IE5.5,IE6
//两个可以用于创建XMLHTTPRequest对象的控件名称。保存在一个JS数组中。
var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i = 0; i<activeName.length; i++){
//取出一个控件名进行创建,如果成功就终止循环
try{
xmlhttp = new ActiveXObject(activexName[i]);
break;
}catch(e){}
}
}
if(xmlhttp){
return xmlhttp;
}else{
alert("XMLHttpRequest对象创建失败!");
}
}
var xmlHttp;
//提交请求数据
function doAjax(){
var fname = document.getElementById("fileName").value;
xmlHttp = createXMLHttpRequest();
alert(xmlHttp);
if(xmlHttp!=null){
xmlHttp.onreadystatechange=processRequest;
xmlHttp.open("GET","BookstoreCheckServlet?fname="+fname,true);
xmlHttp.send(null);
}else{
alert("adfs");
}
}
function processRequest(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status ==200){
var b = xmlHttp.responseText.trim();
if(b=="true"){
document.getElementById("bookname").innerHTML="书名可以使用";
}else{
document.getElementById("bookname").innerHTML="书名已经被使用";
}
}else{
alert("请求处理返回的数据有错误!");
alert(xmlHttp.status);
}
}
}
</script>
调试的时候 弹出 alert("请求处理返回的数据有错误!");
求求大家帮帮我 实在是弄的我无语了 展开
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String fname = request.getParameter("fname");
BookstoreManager bookstoreManager = new BookstoreManager();
request.setCharacterEncoding("GBK");
boolean valid = bookstoreManager.findByBookName(fname);
PrintWriter out = response.getWriter();
out.println(valid);
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
jsp
<script type="text/javascript">
function checkBookExists(){
var fname = document.getElementById("fileName");
if(fname.value.length==""){
alert("书名不能为空!");
fname.focus();
return false;
}else{
doAjax();
}
}
function createXMLHttpRequest(){
//创建XMLHttpRequest对象
if(window.XMLHttpRequest){
//针对FireFox,Mozillar,Opera,Safari,IE7,IE8
xmlhttp = new XMLHttpRequest();
//对某些特定版本的mozillar浏览器的bug进行修正
if(xmlhttp.overrideMineType){
xmlhttp.overrideMineType("text/xml");
}
}else if(window.ActiveXObject){
//针对IE5,IE5.5,IE6
//两个可以用于创建XMLHTTPRequest对象的控件名称。保存在一个JS数组中。
var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i = 0; i<activeName.length; i++){
//取出一个控件名进行创建,如果成功就终止循环
try{
xmlhttp = new ActiveXObject(activexName[i]);
break;
}catch(e){}
}
}
if(xmlhttp){
return xmlhttp;
}else{
alert("XMLHttpRequest对象创建失败!");
}
}
var xmlHttp;
//提交请求数据
function doAjax(){
var fname = document.getElementById("fileName").value;
xmlHttp = createXMLHttpRequest();
alert(xmlHttp);
if(xmlHttp!=null){
xmlHttp.onreadystatechange=processRequest;
xmlHttp.open("GET","BookstoreCheckServlet?fname="+fname,true);
xmlHttp.send(null);
}else{
alert("adfs");
}
}
function processRequest(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status ==200){
var b = xmlHttp.responseText.trim();
if(b=="true"){
document.getElementById("bookname").innerHTML="书名可以使用";
}else{
document.getElementById("bookname").innerHTML="书名已经被使用";
}
}else{
alert("请求处理返回的数据有错误!");
alert(xmlHttp.status);
}
}
}
</script>
调试的时候 弹出 alert("请求处理返回的数据有错误!");
求求大家帮帮我 实在是弄的我无语了 展开
展开全部
用jquery的ajax吧,很简单的,先下载jquery的js文件,引入到jsp页面,然后:
function checkBookExists(){
var fname = document.getElementById("fileName");
if(fname.value.length==""){
alert("书名不能为空!");
fname.focus();
return false;
}else{
$.post('BookstoreCheckServlet',{fname:fname},function(msg){
if(msg=="true"){
$("#bookname").html="书名可以使用";
}else{
$("#bookname").html="书名已经被使用";
}
});
}
}
function checkBookExists(){
var fname = document.getElementById("fileName");
if(fname.value.length==""){
alert("书名不能为空!");
fname.focus();
return false;
}else{
$.post('BookstoreCheckServlet',{fname:fname},function(msg){
if(msg=="true"){
$("#bookname").html="书名可以使用";
}else{
$("#bookname").html="书名已经被使用";
}
});
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
alert("请求处理返回的数据有错误!");
说明xmlHttp.status !=200,在servlet的doGet方法里打个断点,看看请求有没有到servlet里,如果没有,就看看servlet的配置和servlet的地址对不对。如果请求到servlet里了,那可能就是后天执行时报错了。其实看看xmlHttp.status 是多少就知道了。
说明xmlHttp.status !=200,在servlet的doGet方法里打个断点,看看请求有没有到servlet里,如果没有,就看看servlet的配置和servlet的地址对不对。如果请求到servlet里了,那可能就是后天执行时报错了。其实看看xmlHttp.status 是多少就知道了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-04-08
展开全部
你后台打印下valid的值试试,是true还是false
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询