これは私の問題です。私は、フォームを検証し、フォームの送信を許可する前にユーザー名が利用可能であることを確認しようとしています。ユーザ名をチェックする私のPHPスクリプトを含め、すべての私の関数が適切に動作します。しかし、私は提出時に提出するフォームを停止することはできません。私が得たのは、私が定義したAJAX .error(メッセージ)です。 Firebugのレポートフォームが送信された場合、なぜ私のajax関数を処理できないのですか?
throw Components.Exception("prompt aborted by user", Cr.NS_ERROR_NOT_AVAILABLE);
しかし、私がe.preventDefault()を呼び出すと、 username_exists関数の外では、それはフォームの送信を停止し、上記の関数の中で私のチェックを行うことができます。私は完全に困惑しており、あなたが助けてくれることを願っています。ありがとう。
PS。私も、その関数内)(check_username_onsubmit()
で
$(function(){
check_username_onsubmit();
});
function check_username_onsubmit(){
$this = $('#username.registerForm');
$('form.registerForm').submit(function(e){
username_exists($this, function(data){
if(data.found == 1){
e.preventDefault();
alert('Username Taken');
}else{
alert('Username Free');
}
});
// e.preventDefault();
});
}
function username_exists($this, callback){
var username = $this.val();
$.ajax({
url : '../includes/Single Scripts/username_exist.php',
data : {
username : username
},
type : 'POST',
dataType : 'json',
success : function(data){
callback(data);
}
}).error(function(){
alert('An error has occured');
});
}
あなたは '$ this'をグローバル変数にしています。他の場所で更新されている可能性がありますか? –
@Rocket私は内部の機能を除いてどこでも使用していません。 – yehuda
なぜdownvote?説明してください! – yehuda