繁体   English   中英

javascript无法读取阵列键

[英]javascript unable to read array key

我有一个3维数组,它是用php从数据库中提取的,然后用json_encode解析。 该数组从不同的表中提取信息。 现在,如果该列为空,则不会插入任何内容,而是移至下一个键。 问题是每当我尝试检查键是否为空时,javascript崩溃。 我已经尝试过key.length,key === undefined,甚至试图警告键以查看其中的内容,但是javascript崩溃了。

的PHP

    $Cats = array('bags', 'balls', 'clubs', 'putts', 'tees', 'gloves', 'promos');
    $Id = array('ID', 'Image_Path');
    include 'add.php';
    $filesFound = array();
    for($i = 0; $i < 7; $i++){
        for($s = 0; $s < 2; $s++){
            $query = "SELECT " . $Id[$s] . " FROM " . $Cats[$i];
            $result = mysql_query($query);
            if (!$result)
            {
                echo "Database query Failed, contact Support" . $result; // -----ERROR MESSAGE
            }
            $row_count = mysql_num_rows($result);
            if ($result)
            {
                // Create while oop to loop table contents into array.
                while ($row = mysql_fetch_array($result)) 
                {
                    $filesFound[$i][$s][] =  $row[$Id[$s]];
                }
            }else echo "query failed"; // -------------------------------ERROR MESSAGE
        }
    }

的JavaScript

    var checkSelected = false;
    function submitCheck(ys){
        if(ys == ""){
            checkSelected = false;
        }else{
            checkSelected = true;
        }
    }
    function check(){
        if(checkSelected){
            document.getElementById("AddForm").submit();
        }
    }
    function selected(user) {
        //reset the div's.
        var x = document.getElementById('addDIV');
        x.innerHTML = "";
        //determine which one the user selected.
        switch (user) {
            case "Bags":
                a = 0;
                break;
            case "Tees":
                a = 4;
                break;
            case "Clubs":
                a = 2;
                break;
            case "Putts":
                a = 3;
                break;
            case "Balls":
                a = 1;
                break;
            case "Gloves":
                a = 5;
                break;
            case "Promos":
                a = 6;
                break;
            case "":
                return;
                break;
            default:
                return;
                break;
        }
        //variables for switch statement
        var Cats = new Array('bags', 'balls', 'clubs', 'putts', 'tees', 'gloves', 'promos');
        var div = "<div class='addedDiv'> ";
        var closingDiv = " </div>";
        var b = 0;
        var c = cat[a][0].length - 1;
        if (cat[a][0][0] == undefined) {
            x.innerHTML += div + "<p style='color: red;'>There are no images for this category</p>" + closingDiv;
        }else{
            for (i = 0; i < cat[a][0].length; i++) {
                var img = "<div class='staticDiv'><img src='../Images/" + cat[a][1][i] + "' width='300' height='200' /><form name='DelForm' method='POST' action='?'><input type='hidden' name='Lan' value='" + cat[a][0][i] + "'><input type='hidden' name='Image_Path' value='" + cat[a][1][i] + "'><input type='hidden' name='Cat' value='" + Cats[a] + "'><input type='submit' name='submit' id='SButt' value='Delete' /></form></div>";
                //if the loop is going to end before the end tag, force the end tag in.
                if (c == b) {
                    b = 2;
                }
                //Determine whether it needs to open or close a div
                switch (b) {
                    case 0:
                        x.innerHTML += div + img;
                        break;
                    case 1:
                        x.innerHTML += img;
                        break;
                    case 2:
                        x.innerHTML += img + closingDiv;
                        break;
                }
                //reset counter
                if (b == 2) {
                    b = 0;
                } else b++;

            }
        }                  
    }

的HTML

<script type="text/javascript">var cat = <?php echo json_encode($filesFound); ?>;</script>

您需要一次完成一个步骤。 首先检查cat [a]存在,然后检查cat [a] [0],最后检查cat [a] [0] [0]。 一个简短的语法可以是:

if (cat[a] && cat[a][0] && cat[a][0][0] !== undefined) { //Okey dokey }
else { //Oops }

Javascript无法读取密钥,因为它根本不存在。 因此,在PHP插入时需要创建一个NULL键,以便javascript可以检查。 PHP:

            //Check if there is any rows if not set to NULL
            if ($row_count)
            {
                // Create while oop to loop table contents into array.
                while ($row = mysql_fetch_array($result)) 
                {
                    $filesFound[$i][$s][] =  $row[$Id[$s]];
                }
            }else $filesFound[$i][$s][] = NULL;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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