【发布时间】:2016-10-18 20:52:49
【问题描述】:
好的,我有这个表格:
当在第一个输入中输入名称时,我需要使用 SQL 表中的数据填充“ID”和“Email”。名称输入是使用 JSON 自动完成的,这里是 JSON 的示例:
[{
"label": "Andre Nadeau",
"Num": "104J",
"email": "Andre.Nadeau@example.com"
}, {
"label": "Andre Potvin",
"Num": "130J",
"email": "Andre.Potvin@example.com"
}],
我可以自动填写姓名字段,但我不明白如何在其他字段中发送 ID 和电子邮件数据。
PHP:
$query = $db->query("SELECT * FROM info_employer WHERE Prenom LIKE '%".$searchTerm."%' ORDER BY Prenom ASC");
while ($row = $query->fetch_assoc()) {
$data[] = array(
'label' => $row['Prenom'] . ' ' . $row['Nom'],
'Num' => $row['Num'],
'email' => $row['Email']
);}
HTML:
<script>
$(function() {
$( "#Nom" ).autocomplete({
source: 'Search.php',
})
})
</script>
<div class="form-group">
<label for="Name">Nom: </label>
<input type="text" id="Nom" class="form-control" name="Nom" required>
<label for="Num">ID: </label>
<input type="text" id="Num" class="form-control" name="Num">
<label for="Email">Email: </label>
<input type="text" id="Email" class="form-control" name="Email">
编辑:
我正在尝试使用 Feeda 的答案,一切都很有意义,但我很难让它发挥作用。
我将我的 PHP 更改为:
$searchTerm = $_GET['term'];
//get matched data from table
$query = $db->query("SELECT * FROM info_employer WHERE Prenom LIKE '%".$searchTerm."%' ORDER BY Prenom ASC");
while ($row = $query->fetch_assoc()) {
switch($option) {
case 'nom':
$data[] = $row['Prenom'] . ' ' . $row['Nom'];
case 'email':
$data[] = $row['Email'];
}
还有 Javascript:
<script>
$(function() {
$( "#Nom" ).autocomplete({ source: 'Search.php?option=name', })
$( "#email" ).autocomplete({ source: 'Search.php?option=email', })
})
</script>
如果我理解正确,我应该能够使用 /Search.php?option=nom 并查看一些数据,但是当我在浏览器中尝试时给我一个带有“null”的空白页面。
当然我的自动完成功能还没有工作:(
更新
在这一点上,我不确定如果我创建一个新问题是否会更好,但我快到了!
借助我在这里获得的所有帮助,我能够获得所需的数据(谢谢大家
我现在的问题是我可以使用表单中的“姓名”字段找到用户,但是一旦我选择了用户,我需要使用链接到我数据库中用户的电子邮件自动完成电子邮件字段。 .
所以这里是我的代码:
HTML
$(函数(){
$( "#Nom" ).autocomplete({ source: 'Search.php?option=nom', })
$( "#email" ).autocomplete({ source: 'Search.php?option=email', })
})
PHP
//get search term
$option = $_GET['option'];
$searchTerm = $_GET['term'];
//get matched data from table
$query = $db->query("SELECT * FROM info_employer WHERE Prenom LIKE '%".$searchTerm."%' ORDER BY Prenom ASC");
while ($row = $query->fetch_assoc()) {
switch($option) {
case 'nom':
$data[] = $row['Prenom'] . ' ' . $row['Nom'];
case 'email':
$data[] = $row['Email'];
}
}
//return json data
echo json_encode($data);
我认为我应该在最后一部分机器人中使用 Ajax,因为您可能已经猜到这不是我的技能之一。
更多更新
遵循 gschambial 的建议:
HTML
<script>
$(function(){
$('#Nom').autocomplete({
minLength: 0,
source: function (request, response) {
$.ajax({
type: "GET",
url: 'Search.php',
dataType: "json",
data: {term : request.term},
dataType: "json",
success: function (data) {
$.each(data,function(key, item){
return {
label : item.NumColumnName,
value : item.EmailColumnName
};
});
},
error: function (result) {
alert("Error");
}
});
},
select: function (event, ui) {
var Num = $("#Num");
var Email = $("#Email");
Num.val(ui.item.label);
Email.val(ui.item.value);
}
});
});
PHP
$searchTerm = $_GET['term'];
//get matched data from table
$query = $db->query("SELECT * FROM info_employer WHERE Prenom LIKE '%".$searchTerm."%' ORDER BY Prenom ASC");
while ($row = $query->fetch_assoc()) {
switch($option) {
case 'nom':
$data[] = $row['Prenom'] . ' ' . $row['Nom'];
case 'email':
$data[] = $row['Email'];
}
}
//return json data
echo json_encode($data);
还是没有运气!
【问题讨论】:
-
你能
$(function() { $.ajax({ method: 'POST', url: 'Search.php' success: function(response) { console.log(response); }); });执行这段代码并告诉我你的php文件返回了什么吗? -
我尝试了代码,它返回了一个 Uncaught SyntaxError: Unexpected identifier in the console,不确定我是否遗漏了什么
标签: javascript php jquery json autocomplete