使用PHP创建Javascript数组时未定义该数组
再往上看,我正在创建一个filterComparables[]数组使用PHP创建Javascript数组时未定义该数组,javascript,php,jquery,Javascript,Php,Jquery,再往上看,我正在创建一个filterComparables[]数组 var filterComparables[<?=$x?>] = <?php echo json_encode($comparables); ?>; 我已经调试并正确返回int值,但是当尝试访问filterComparables[propID]时,它返回“filterComparables未在HtmleElement定义”。我还尝试过严格访问filterComparables[0],结果相同 是不是因为
var filterComparables[<?=$x?>] = <?php echo json_encode($comparables); ?>;
我已经调试并正确返回int值,但是当尝试访问filterComparables[propID]时,它返回“filterComparables未在HtmleElement定义”。我还尝试过严格访问filterComparables[0],结果相同
是不是因为我在PHP中创建了索引数组,但它没有在DOM中注册?我很困惑。在PHP中创建索引数组应该没问题,您声明filterComparables变量的方式很可能是这里的问题,我把它弄得有点乱,下面是我为我设计的脚本的简化形式:
<?php
$x = 1;
$comparables = array('foo','bar','bas');
?>
<script>
var filterComparables = [];
filterComparables[<?=$x?>] = <?php echo json_encode($comparables); ?>;
</script>
<p>some html for filler</p>
<script>
// var propID = parseInt($(this).closest('tr').find('.propID').text());
var property = filterComparables[1];
console.log(property);
</script>
var filterComparables=[];
过滤器比较[]=;
一些用于填充的html
//var-propID=parseInt($(this).closest('tr').find('.propID').text());
var属性=过滤器比较[1];
console.log(属性);
注意,我声明了filterComparables并键入它,然后开始给它赋值。console.log(JSON.stringify(filterComparables))log是什么意思?我对如何创建
filterComparables
数组有点怀疑。您是否在循环中创建它?然后请记住,您可以通过var
一次又一次地覆盖整个arrray。如果没有,为什么要在那里使用
?这将是过时的。是不是”
然后在代码中使用JSON.parse
?@eisbehr如果他们在JSON周围放上“”,javascript将不会自动将其解析为对象。他们必须对我写的东西进行JSON.parse?!我不能100%确定将php的输出直接放在那里是否有效。难道没有任何情况下json_编码应该被再次解析吗?!还不确定@Taplar@eisbehr这完全是情境性的,比如ajax请求将返回一个必须解析的字符串,但在本例中,javascript是生成的。所以varx={“x”:“y”}
的工作原理与正在解析的字符串版本一样好,程序员只需少键入一个操作。
<?php
$x = 1;
$comparables = array('foo','bar','bas');
?>
<script>
var filterComparables = [];
filterComparables[<?=$x?>] = <?php echo json_encode($comparables); ?>;
</script>
<p>some html for filler</p>
<script>
// var propID = parseInt($(this).closest('tr').find('.propID').text());
var property = filterComparables[1];
console.log(property);
</script>