简体   繁体   中英

Check inArray from a php array

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!");
    }



})

Why is this not working?

The array contains 1234 and 7777 . So if I type 7777 into the html input field ( #port ) it should do the first action (if true)

But it always goes into the else action.

you need to cast integers in array to string by quoting and remove [port] here is a working example of your code http://jsfiddle.net/4X68y/

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

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

jQuery inArray accepts array as second parameter - not specific key.

Try this:

$("#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!");
}

})

--EDIT--

The following works for me (if the portlist is array not json object. If it isnt maybe it's a good idea to just loop the results and create the array old fashioned way like below)

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!");
}
})

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM