[英]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.