从php数组中检查inArray

时间:2014-01-30 13:47:52

标签: javascript php jquery arrays

PHP:

$ports = $Db->query('SELECT port FROM servers');

使用Javascript:

$("#port").on('keyup', function(){
    var port = $("#port").val();
    var portlist = <?php print(json_encode($ports)); ?>;

    if(jQuery.inArray(port, portlist[port])!==-1)
    {
        $("#result").removeClass("label-success");
        $("#result").removeClass("label-warning");
        $("#result").addClass("label label-danger");
        $("#result").html("Port belegt!");
    }
    else
    {
        $("#result").removeClass("label-danger");
        $("#result").removeClass("label-warning");
        $("#result").addClass("label label-success");
        $("#result").html("Port Frei!");
    }



})

为什么这不起作用?

数组包含12347777。 因此,如果我在html输入字段(7777)中输入#port,它应该执行第一个操作(如果为true)

但它总是进入其他行动。

2 个答案:

答案 0 :(得分:1)

你需要通过引用和删除[port]将数组中的整数转换为字符串 这是您的代码的工作示例 http://jsfiddle.net/4X68y/

 var portlist = ["1234","777"];

    if(jQuery.inArray(port, portlist)!==-1)

答案 1 :(得分:0)

jQuery inArray接受数组作为第二个参数 - 而不是特定的键。

试试这个:

$("#port").on('keyup', function(){
var port = $(this).val();
var portlist = <?php print(json_encode($ports)); ?>;

if(jQuery.inArray(port, portlist)!==-1)
{
    $("#result").removeClass("label-success");
    $("#result").removeClass("label-warning");
    $("#result").addClass("label label-danger");
    $("#result").html("Port belegt!");
}
else
{
    $("#result").removeClass("label-danger");
    $("#result").removeClass("label-warning");
    $("#result").addClass("label label-success");
    $("#result").html("Port Frei!");
}

})

- 编辑 -

以下对我有用(如果portlist是数组而不是json对象。如果不是这样可能只是循环结果并创建如下所示的老式数组)

<强> PHP:

<?php
$q = $db->query("SELECT port FROM ports");
$ports = array();
while($$row = $result->fetch_assoc()){ 
            $ports[] = $row['port'];
        } 
?>

JS CODE:

$("#port").on('keyup', function(){
var port = parseInt($(this).val());
var portlist = <?php print(json_encode($ports)); ?>;

if(jQuery.inArray(port, portlist)===-1)
{
    $("#result").removeClass("label-success");
    $("#result").removeClass("label-warning");
    $("#result").addClass("label label-danger");
    $("#result").html("Port belegt!");
}
else
{
    $("#result").removeClass("label-danger");
    $("#result").removeClass("label-warning");
    $("#result").addClass("label label-success");
    $("#result").html("Port Frei!");
}
})