如何使用ajax回调更新/填充多个输入字段?

时间:2017-07-17 03:19:37

标签: javascript php jquery ajax

我下面的代码有效。一旦ajax调用完成,我只需要填充输入字段来更新值。但是,我不知道ajax成功函数来回调php变量($ first,$ last等)来填充这些输入字段。提前致谢!

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'];

2 个答案:

答案 0 :(得分:2)

在你的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); IF 列名称与表单名称匹配。

另外,请确保发送回html安全字符串。如果用户已保存<script>doSomething(nasty)</script>或类似内容,您可能会将恶意代码放入html中。我可能会在返回时使用htmlspecialchars($value,ENT_QUOTES)作为您的值。取决于数据库中first_namelast_nametitle的内容。

答案 1 :(得分:0)

首先,您的ajax.php应该返回true或false 如果返回true,它将传递给ajax.success, 否则,它将传递给ajax.error

在你的ajax.success中,你应该做一些回应(提交成功) 也许警报,也许重定向到其他页面。 这是一个例子:

success: function(){
   alert('Submission Successful!! ');
}