01/10/2018, 00:59

Thắc mắc form đăng ký javascript ajax

E có một form đăng ký , dùng ajax để kiểm tra username có tồn tại hay chưa, e không biết tại sao if else javascript mà nó không thực hiện lệnh bên trong :’(
code ajax

$("#username").blur(function(){
	var username = $("#username").val();
 	$.ajax({
		url: 'CheckUserExist',
		data: {
 			username: username
		},
		success: function(response){
 			console.log(response);
 			if(response=="exist"){
 				$('.user-message').html("<span style='color:red'>Tài khoản đã tồn tại</span>");
			}
			else{
				$('.user-message').html("<span style='color:green'>Tài khoản có thể sử dụng</span>");
			}
 		},
		error: function(){
			console.log("err");
 		}			
	});
});

Code servlet:

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 	String username = request.getParameter("username");
 	if(UserDB.isUserExist(username)){
 		response.getWriter().println("exist");
 	}
 	else{
 		response.getWriter().println("not-exist");
 	}
 }

Kết quả chạy cái form:


E cám ơn

Zi viết 03:05 ngày 01/10/2018

Mình nghĩ trong trường hợp này không nên dùng ELSE
Chơi vậy luôn

if(response=="exist"){
	$('.user-message').html("<span style='color:red'>Tài khoản đã tồn tại</span>");
}
if(response=="not-exist"){
	$('.user-message').html("<span style='color:green'>Tài khoản có thể sử dụng</span>");
}
traiotdo viết 03:02 ngày 01/10/2018

Nó không chạy luôn bạn ơi không dòng nào chạy hết

Nhân Nguyễn viết 03:13 ngày 01/10/2018

Bạn bug nó đã sang dc controller chưa ?

Đỗ Trung Quân viết 03:11 ngày 01/10/2018

Đầu tiên là bật debug lên xem nó đã đẩy được data lên server chưa bằng cách F12 trình duyệt và debug js. Nếu nhảy vào được success thì xem giá trị của log(response) là gì. Tiếp theo là debug trong code java

doGet đã có annotation chưa?

 @WebServlet("/CheckUserExist")
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 	String username = request.getParameter("username");
        response.setContentType("text/plain");
 	if(UserDB.isUserExist(username)){
 		response.getWriter().println("exist");
 	}
 	else{
 		response.getWriter().println("not-exist");
 	}
 }
$(document).ready(function() {
	$('#userName').blur(function() {
		$.ajax({
			url : 'CheckUserExist',
                        type: 'GET',
			data : {
				userName : $('#username').val()
			},
			success : function(response) {
                                if(response=="exist"){
 				$('.user-message').html("<span style='color:red'>Tài khoản đã tồn tại</span>");
			}
			else{
				$('.user-message').html("<span style='color:green'>Tài khoản có thể sử dụng</span>");
			}
			}
		});
	});
});
traiotdo viết 03:15 ngày 01/10/2018

e kiểm tra nó có đẩy dữ liệu lên server được rồi, console log nó cũng in ra được cái response đúng, mà nó không chạy cái dòng user-message,…kiêm tra code java nó đều chạy if else đúng

traiotdo viết 03:08 ngày 01/10/2018

Back-end mình dùng java, mình đã kiểm tra nó gửi được username qua doGet() mà, cũng in ra cái response. Nhưng khi mình chạy đánh một cái tên đã có trong database, nó in console ra exist nhưng nó lại không in ra dòng “Tài khoản đã tồn tại” mà chạy dòng màu xanh

Nguyen Ca viết 03:05 ngày 01/10/2018

Khả năng là không tim thấy ‘user-message’

Nhân Nguyễn viết 03:11 ngày 01/10/2018

view mình xem tag có class là .user-message

Tạ Duy Hoàng viết 03:10 ngày 01/10/2018

khi dùng ajax sẽ gọi get, còn dữ liệu từ GET đẩy lên client thì sẽ k thể dùng response như bình thường nhé. Phải dùng PrintWriter như bạn dùng ấy.Lý dó response thì sẽ đẩy page, load lại trang, còn ajax mục đích k để nó load lại trang, và chỉ có pringwriter mới làm được việc đó.

Bài liên quan
0