2017-07-17 19 views
1

以下のコードは動作します。私はちょうどajax呼び出しが完了した後に値を更新するために入力フィールドを設定する必要があります。しかし、私は、入力フィールドに値を設定するPHP変数($ first、$ lastなど)をコールバックするajaxの成功関数を知らない。前もって感謝します!複数の入力フィールドをajaxコールバックで更新/入力する方法

HTML:

<div class="field-wrap"> 
    <input id="first" class="form-control" name="first" value="<?php echo $first ?>"/> 
    <input id="last" class="form-control" name="last" value="<?php echo $last ?>"/> 
    <input id="title" class="form-control" name="title" value="<?php echo $title ?>"/> 
    <input id="user_input" class="form-control" name="user_input" type="text"/> 
</div> 

スクリプト:

<script type="text/javascript"> 
    $(document).ready(function(){ 
    $('#user_input').on('change',function(){ 
     var input_user = $(this).val(); 
     if(input_user){ 
     $.ajax({ 
      type:'POST', 
      url:'ajax.php', 
      data:{user_input:user_input}, 
      success: function(){ 
      ???WHAT DO I NEED TO PUT HERE TO POPULATE THE INPUT FIELDS WITH DATA 
      } 
     } 
     } 
    }); 
    }); 
</script> 

PHP:

$user_input = $_POST['user_input']; 
$query_sql = $DB_CON_A->prepare("SELECT * FROM table_account WHERE account=:user_input"); 
$query_sql->bindValue(':user_input', $user_input, PDO::PARAM_STR); 
$query_sql->execute(); 
$user = $query_sql->fetch(PDO::FETCH_ASSOC); 
$first = $user['first_name']; 
$last = $user['last_name']; 
$title = $user['title']; 

答えて

1

あなたのPHPでは、あなたはおそらくちょうどechoへをお勧めしますオブジェクト/配列:私はおそらく、あなたのような(データベースから返される列を一致させるために、あなたの入力フィールド名を変更します

success: function(response){ 
    var data = JSON.parse(response); 
    $('#first').val(data.first_name); 
    $('#last').val(data.last_name); 
    $('#title').val(data.title); 
} 

:あなたのAjaxの成功で

die(json_encode($user)); 

、ちょうどエンコードjson文字列を解析あなたのフォームフィールドにid属性を特に使用する必要なしに、を使用して、一致する入力名を簡単に自動ポールすることができます(titleの場合)。ループ内で$('input[name='+key+']').val(value);を使用することができますIF列名はフォーム名と一致します。

また、HTMLで安全な文字列を返送していることを確認してください。ユーザーが<script>doSomething(nasty)</script>などを保存している場合、あなたのhtmlに悪質なコードを入れてしまう可能性があります。返品時には値としてhtmlspecialchars($value,ENT_QUOTES)を使用します。 first_namelast_name、およびtitleのデータベースに依存します。リターンtrueの場合

+0

ありがとうございます。しようとします。 echo(json_encode($ user))またはdie(json_encode($ user))を使用する必要がありますか? – javystar

+0

私は 'die()'を使って、そのあとに出力はありません。それはjsonをajaxに改ざんする可能性があります。 'die()'の方が安全です。 – Rasclatt

+0

魅力的な作品です。ありがとうございました!! – javystar

0

まず、あなたのajax.phpが trueまたはfalseを返す必要があり、それはajax.success、 に渡すそうでない場合、それはあなたのajax.successajax.error

に渡すには、その応答(提出成功)何かをする必要があります 多分、他のページにリダイレクトする可能性があります。 ここに例があります:

success: function(){ 
    alert('Submission Successful!! '); 
} 
関連する問題