JaveWeb学習-ボタンでajaxを介してテーブルをservletに送信する際に発生する問題

3891 ワード

これは一つのプロジェクトで出会った不思議なバグで、今まで原理が何なのか分からなかった(暇があればもう一度娘に会いましょう)
 
問題の説明:
formに内容を記入し、buttonというラベルのボタンをクリックしてjsにジャンプして判断し、ある判断文でajaxでservletにコミットし、servletがデータベースにアクセスしてテーブルの内容を格納する
————これらの機能はすべて成功しました———
ただしajaxはservletが完了すると戻り値を取得できますが、最後に戻り値はありません(sucess、error、completeもありません).
 
対応するコードを貼り付けます.

対応jsセクション:
function validate () {   
	var inputCode = document.getElementById("vcode").value;
	var name = document.getElementById("usrName").value;
	var email = document.getElementById("usrEmail").value;
	var password = document.getElementById("usrKey").value;
	var cfmKey = document.getElementById("cfmKey").value;
	if (inputCode.length <=0) {   
		alert("      !");   
	} else if (inputCode.toUpperCase() != code.toUpperCase()) {   
		alert("       !");   
		createCode();
	} else {   
		if (name == "") {
			alert("      ");
			createCode();
		} else if (email == "") {
			alert("     ")
			createCode();
		} else {
			var ok = 0;
			for (i = 1; i < email.length-1; i++) {
				if (email[i] == '@') {
					ok = 1;
					break;
				}
			}
			if (ok == 0) {
				alert("        ");
				createCode();
			} else if (password == "") {
				alert("     ");
				createCode();
			} else if (password != cfmKey) {
				alert("          ");
				createCode();
			} else {
				$.ajax({
					type: "POST",
					url: "UserRegister",
					data: $('#Signup-form').serialize(),
					dataType: "text",
					complete: function(){
						alert("com");
					},
					success: function(message){
						alert("llll");
						if(message == "failure"){
							alert("    ,      ");
						}else{
							alert("    !");
							window.location.href="login.jsp";
						}
					},
					error: function(XMLHttpRequest, textStatus, errorThrown){
						alert(XMLHttpRequest.status);
						alert(XMLHttpRequest.readyState);
						alert(textStatus);
					}
				});
			}
		}

	}   
}

上のjsコードから分かるようにajaxでservletにジャンプするとどうしてもalert弾窓があるはずですが、少なくともcompleteはあるでしょう.
しかし、少しも反応しなかった.の
肝心なのはデータベースにコンテンツが保存されていることであり、dopostの最後の文も実行されている(system.out出力)
最後にフォームをコミットしてjsを実行している間に他の問題があってフォームをコミットしていない場合、フォームは自動的にリフレッシュされます!!!私は何もしていません.の
 
ソリューション
buttonをaに変えたら、このバグはありません.
 
とても不思議です...推測では表のbuttonに特殊な役割があり、htmlに埋め込まれたイベントのようなもの??