JaveWeb学習-ボタンでajaxを介してテーブルをservletに送信する際に発生する問題
これは一つのプロジェクトで出会った不思議なバグで、今まで原理が何なのか分からなかった(暇があればもう一度娘に会いましょう)
問題の説明:
formに内容を記入し、buttonというラベルのボタンをクリックしてjsにジャンプして判断し、ある判断文でajaxでservletにコミットし、servletがデータベースにアクセスしてテーブルの内容を格納する
————これらの機能はすべて成功しました———
ただしajaxはservletが完了すると戻り値を取得できますが、最後に戻り値はありません(sucess、error、completeもありません).
対応するコードを貼り付けます.
対応jsセクション:
上のjsコードから分かるようにajaxでservletにジャンプするとどうしてもalert弾窓があるはずですが、少なくともcompleteはあるでしょう.
しかし、少しも反応しなかった.の
肝心なのはデータベースにコンテンツが保存されていることであり、dopostの最後の文も実行されている(system.out出力)
最後にフォームをコミットしてjsを実行している間に他の問題があってフォームをコミットしていない場合、フォームは自動的にリフレッシュされます!!!私は何もしていません.の
ソリューション
buttonをaに変えたら、このバグはありません.
とても不思議です...推測では表のbuttonに特殊な役割があり、htmlに埋め込まれたイベントのようなもの??
問題の説明:
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に埋め込まれたイベントのようなもの??