我知道如何使用纯PHP执行此操作,但我需要在不重新加载页面的情况下执行此操作。无论如何使用jQuery来有效地撤回一些数据库结果(基于用户在表单上的第一个文本字段中输入的内容),然后使用从数据库查询中提取的数据填充其余一些字段?
基本上我希望看到用户远离文本字段(通过标签或通过单击下一个字段)和繁荣,使用在该字段中输入的值提交查询,然后随后的字段填充w / o页面重新加载。
我熟悉jQuery的基础知识,但我还没有用它来做这样的事情,我从服务器上取回数据并试图填充客户端。
非常感谢任何有关如何最好地开始这方面的建议/示例。感谢。
答案 0 :(得分:30)
假设这个例子是HTML:
<input type="text" name="email" id="email" />
<input type="text" name="first_name" id="first_name" />
<input type="text" name="last_name" id="last_name" />
你可以拥有这个javascript:
$("#email").bind("change", function(e){
$.getJSON("http://yourwebsite.com/lokup.php?email=" + $("#email").val(),
function(data){
$.each(data, function(i,item){
if (item.field == "first_name") {
$("#first_name").val(item.value);
} else if (item.field == "last_name") {
$("#last_name").val(item.value);
}
});
});
});
然后,您只有一个PHP脚本(在本例中为lookup.php),它在查询字符串中接收一封电子邮件,并返回一个JSON格式的数组,其中包含您要访问的值。这是实际命中数据库以查找值的部分:
<?php
//look up the record based on email and get the firstname and lastname
...
//build the JSON array for return
$json = array(array('field' => 'first_name',
'value' => $firstName),
array('field' => 'last_name',
'value' => $last_name));
echo json_encode($json );
?>
你会想做其他事情,例如清理电子邮件输入等,但应该让你朝着正确的方向前进。
答案 1 :(得分:12)
自动填充数组中的所有表单字段
http://jsfiddle.net/brynner/wf0rk7tz/2/
JS
function fill(a){
for(var k in a){
$('[name="'+k+'"]').val(a[k]);
}
}
array_example = {"God":"Jesus","Holy":"Spirit"};
fill(array_example);
HTML
<form>
<input name="God">
<input name="Holy">
</form>
答案 2 :(得分:8)
如果您需要点击数据库,则需要再次点击Web服务器(大部分时间)。
您可以使用AJAX,它向您网站上的其他脚本发出请求以检索数据,获取数据,然后更新所需的输入字段。
可以使用$ .ajax()函数调用在jquery中进行AJAX调用,这样就会发生
用户的浏览器输入触发进行AJAX调用的触发器的输入
$('input .callAjax').bind('change', function() {
$.ajax({ url: 'script/ajax',
type: json
data: $foo,
success: function(data) {
$('input .targetAjax').val(data.newValue);
});
);
现在你需要指出AJAX调用脚本(听起来像你正在使用PHP),它将执行你想要的查询并发回数据。
您可能希望使用JSON对象调用,这样您就可以传回一个javascript对象,这比返回XML等更容易使用。
php函数json_encode($ phpobj);会很有用。