我有一个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 Bobbyyour script is at risk for SQL Injection Attacks.了解preparedMySQLi语句。即使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);

09-30 15:57
查看更多