2017-07-17 72 views
1

我在下面的代碼工作。一旦ajax調用完成,我只需填充輸入字段以更新值。但是,我不知道ajax成功函數來回調php變量($ first,$ last等)來填充這些輸入字段。提前致謝!如何使用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一個json對象/數組:

die(json_encode($user)); 

在你的Ajax的成功,只是解析編碼json字符串:

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

我可能會改變你的輸入字段名從數據庫匹配返回的列(如你對於title),這樣你就可以使用$.each()並輕鬆自動填充任意數量的匹配輸入名稱,而無需在表單域中專門使用id屬性。您可以在循環中使用$('input[name='+key+']').val(value);如果列名稱與表單名稱匹配。

此外,請確保您發回的html安全字符串。如果用戶保存了<script>doSomething(nasty)</script>或類似文件,則可能會將惡意代碼放入您的html中。我可能會使用htmlspecialchars($value,ENT_QUOTES)作爲回報的價值。取決於first_name,last_nametitle數據庫中的內容。

+0

謝謝。會嘗試。我應該使用echo(json_encode($ user))還是die(json_encode($ user))? – javystar

+0

我會使用'die()',所以在那之後沒有輸出。它可能會使json回到ajax。 '死()'更安全。 – Rasclatt

+0

工程就像一個魅力。謝謝!! – javystar

0

首先,你ajax.php應該返回true或false 如果返回true,它會傳遞給ajax.success, 否則,它會傳遞給ajax.error

在你ajax.success,你應該做的事情響應(投稿成功) 也許警覺,也許重定向到其他頁面。 以下是一個示例:

success: function(){ 
    alert('Submission Successful!! '); 
} 
相關問題