我下面的代码有效。一旦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'];
答案 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_name
,last_name
和title
的内容。
答案 1 :(得分:0)
首先,您的ajax.php
应该返回true或false
如果返回true,它将传递给ajax.success
,
否则,它将传递给ajax.error
在你的ajax.success
中,你应该做一些回应(提交成功)
也许警报,也许重定向到其他页面。
这是一个例子:
success: function(){
alert('Submission Successful!! ');
}