2011-09-19 7 views
0

これは私が使用している私のHTMLフォームです。jqueryで関数変数を渡すにはどうしたらいいですか?

<label>Your Username:</label><input id="username" name="username" type="text" onchange="return ajax ('username');" /> 

これはphpのmy ajax checkingファイルです。私のフォームで

if ($_REQUEST['username']) { 

$q = $dbc -> prepare("SELECT username FROM accounts WHERE username = ?"); 
$q -> execute(array($_REQUEST['username'])); 

if (strlen($_REQUEST['username']) < 3) { 
    echo '<div class="error">Has to be at least 3 characters</div>'; 
} 

elseif ($q -> rowCount() > 0) { 
    echo '<div class="error">Username already taken</div>'; 
} 
else { 
    echo '<div class="success">Username available</div>'; 
} 
} 

そして、私のjqueryのAJAXリクエスト...

function ajax (input) { 

var val = $('#'+input).val(); 
$('.loading').fadeIn().delay(100); 
$.post("ajax.php", { 
    username: val, 
}, 
function (response) { 
    $('.error, .success').hide(); 
    setTimeout(function(){ 
     $('.loading').hide(); 
      finishAjax(input, response); 
    }, 1000); 
}); 
return false; 
} 

function finishAjax(id, response) { 

$('#'+id).after(response).fadeIn(2000); 
} 

私は、変数名とAJAX要求を呼び出します。

私のajax.phpでは、要求の名前がusernameの場合、ユーザー名の正しい検証が行われます。

私は、私は他の検証のために、このスクリプトを使用することができますjqueryのコードでの代わりに変数の入力を表示し、電子メール、またはパスワードとまだ値として実行するスクリプトとして変数を渡したいです入力のは必要なものになります。

これは意味がある場合。

お時間をいただきありがとうございます。

答えて

2
var data = {}; 
data[input] = $('#' + input).val(); 

$.post("ajax.php", data, function() {... 

finishAjax(input, response); 
+0

これは動作していないようです。あなたが入力したものを正確に行い、ajax呼び出しが失敗します。 – carlgcode

+0

これは、パラメータ名として 'input'の値を送ります。これがあなたが本当にやりたいことなのかどうかは分かりません。 –

+0

詳しい情報を提供しないと助けにならない。私が投稿したのは、あなたが提示したコードの変更点です。たぶん、投稿していない他のものも調整する必要があります。 –

0

あなたは、 "入力" の値にvalを宣言し、それを使ったことがないています。 usernameのすべての用途はその変数valにアクセスする必要がありますので、それを使用してください。私はあなたの質問を誤解していない限り、このような何か(一つだけの行を変更):

function ajax(input) { 
    var val = $('#' + input).val(); 
    $('.loading').fadeIn().delay(100); 
    $.post("ajax.php", { 
     username: val, 
    }, function (response) { 
     $('.error, .success').hide(); 
     setTimeout(function() { 
      $('.loading').hide(); 
      finishAjax('username', response); 
     }, 1000); 
    }); 
    return false; 
} 
+0

変数入力は、入力フィールドのCSS IDです。戻り値の呼び出しで.after(応答)を使用してajax呼び出しを表示する場所を知ることができます。変数valは、この問題が発生した場合にユーザーが入力したものですか? – carlgcode

0

チェック入力引数ワット・LL U GETその後、

{username: $('#' + input).val(),} 

as ,{ username: $('#' + input).val()}, 
の近くに..... 削除セミコロンを進めます

はo/pを取得します

0

$ .postを呼び出す前に、空のオブジェクトを作成してください。

var data = {}; 

オブジェクトのインデックスとして関数のパラメータを使用します。

data[input] = val; 

$ .post呼び出しで、匿名オブジェクトリテラルの代わりにそのオブジェクトを使用します。あなたは、物事あなたが記述している方法を行う場合

$.post("ajax.php", data, function ...); 

は、しかし、あなたはあなたが適切に渡すすべてのこれらのパラメータを管理することを確認する必要があります。 ajax関数に渡す可能性のあるすべての異なる値をPHPスクリプトが処理できることは確かですか?

+0

ちょっと分かりました...あなたの目標は** ajax **関数が文字列をパラメータとして受け取り、その文字列を** id **属性として持つ要素の値を取得してから文字列をそのパラメータのラベルとして** ajax.php **に送る。これは正しいです?つまり、ajax( "name");と書いてください。 ** id ** "name"を持つ要素を検索し、その値をつかんで、 "ajax.php **"のajax投稿で "name:value"として送信することを期待していますか? – natlee75

+0

はい、正解であり、あなたの答えに感謝します。 – carlgcode