我有一个PHP
表单,看起来像这样
<form>
<div id="inid">
National ID: <input type="text" id="individual_nid" oninput="getIndividualName(this.value)" />
</div>
<hr />
name: <div id="individual_name_fetch"></div>
<hr />
<div id="other_inputs fields" style="display: none;">
more inputs fields...
</div>
</form>
在我的
PHP
表单中,我有一个输入textbox
,用户在其中输入数字<input id="individual_nid" oninput="getIndividualName(this.value)" />
此
textbox
快速触发以下ajax
函数function getIndividualName(val)
{
$.ajax({
type: "POST",
url:"get_individual_name.php",
data: 'individual_nid='+val,
success: function(data){
$("#individual_name_fetch").html(data);
}
});
}
在此功能中,我将用户输入传递给
get_individual_name.php
页面。在
get_individual_name.php
页面中,我有一个PHP
脚本,该脚本在数据库中搜索插入的数字并获取相应的个人名称,并将其提取到id="individual_name_fetch"
div中。PHP
页面中的get_individual_name.php
脚本如下所示:$q = mysqli_query($link, "SELECT * FROM table WHERE national_id = '".$_POST['individual_nid']."' ");
if(mysqli_num_rows($q) == 1)
{
while($r = mysqli_fetch_assoc($q))
{
echo $individual_name = $r['individual_name'];
}
}
else
{
echo $individual_name = 'Not in db';
}
到这里一切都很好
我现在需要做的...
如果搜索到的用户建立在db
(mysqli_num_rows($q) == 1)
中,那么我想在表格中显示其他输入div id="other_inputs fields"
。如果不是,则other_inputs fields
div再次隐藏我该怎么做?
请注意,
ajax
函数和PHP
脚本是即时运行的注意和更新
脚本的输出将是
HTML
代码,例如如果找到结果,则输出为:
<span style="color: green;"><i class="fa fa-check fa-fw fa-lg"></i> <?=$individual_name;?></span>
要么
如果没有找到结果:
<span style="color: red;"><i class="fa fa-times fa-fw fa-lg"></i> No user found.</span>
我在想的是分配一个变量,例如
$show_extra_fields = true
或$show_extra_fields = false
并将其传递回ajax函数,然后从那里检查$ show_extra_fields变量的值,并根据该值显示/隐藏其他字段div。这可能吗?
最佳答案
要执行您要的操作,您可以向AJAX回调添加显示和隐藏功能:
function getIndividualName(val)
{
$.ajax({
type: "POST",
url:"get_individual_name.php",
data: 'individual_nid='+val,
dataType: 'json',
success: function(data){
$("#individual_name_fetch").html(data);
if(data[0] != 'Not in db') {
$('#other_inputs').show();
} else {
$('#other_inputs').hide();
}
}
});
}
请记住,ID's Must Be Unique,特别是因为当您尝试与这些元素进行交互时,它将在JavaScript和CSS中引起问题。 ID中不能包含空格。
编辑:用PHP返回JSON(注意:Little Bobby说your script is at risk for SQL Injection Attacks.了解prepared的MySQLi语句。即使escaping the string也不安全!)
$q = mysqli_query($link, "SELECT * FROM table WHERE national_id = '".$_POST['individual_nid']."' ");
$json = array();
if(mysqli_num_rows($q) == 1)
{
while($r = mysqli_fetch_assoc($q))
{
$json[] = $r['individual_name'];
}
}
else
{
$json[] = 'Not in db';
}
echo json_encode($json);