Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将使用json#u encode方法的PHP数组传递到外部Javascript函数中,结果为';未定义';_Php_Javascript_Arrays_Json - Fatal编程技术网

将使用json#u encode方法的PHP数组传递到外部Javascript函数中,结果为';未定义';

将使用json#u encode方法的PHP数组传递到外部Javascript函数中,结果为';未定义';,php,javascript,arrays,json,Php,Javascript,Arrays,Json,我已经搜索过了,我也从下面的网站上得到了一些想法。 我的示例代码如下: <?php $array_sample = array("c1","c2"); $newArray = json_encode($array_sample); ?> <INPUT type="button" value="Php Array" onclick="Test(<?php echo $newArray ?>)" /> <script language="javascr

我已经搜索过了,我也从下面的网站上得到了一些想法。 我的示例代码如下:

 <?php $array_sample = array("c1","c2"); $newArray = json_encode($array_sample); ?>
 <INPUT type="button" value="Php Array" onclick="Test(<?php echo $newArray ?>)" />
 <script language="javascript"> function Test(test_arr){    alert(test_arr); }</script>


使用
json\u encode()
时,结果中会保留双引号。因此,
json\u encode($array\u sample)
产生:

["c1","c2"]
将其放入HTML时,您有:

<INPUT type="button" value="Php Array" onclick="Test(["c1","c2"])" />
编辑(
htmlentities()
vs.
addslashes()

似乎使用
addslashes()
实际上不起作用,因为属性中的转义双引号无效,例如
onclick=“Test(\'value\”)
。但是,html实体版本,如
onclick=“Test(“value”)”
可以工作


因此,我将原来的答案从“使用
addslashes()
”改为“使用
htmlentities()
”。

当使用
json\u encode()
时,结果中保留了双引号。因此,
json\u encode($array\u sample)
产生:

["c1","c2"]
将其放入HTML时,您有:

<INPUT type="button" value="Php Array" onclick="Test(["c1","c2"])" />
编辑(
htmlentities()
vs.
addslashes()

似乎使用
addslashes()
实际上不起作用,因为属性中的转义双引号无效,例如
onclick=“Test(\'value\”)
。但是,html实体版本,如
onclick=“Test(“value”)”
可以工作


因此,我将原来的答案从“use
addslashes()
”改为“use
htmlentities()
”。

页面源代码是什么样子(php解析完成后)?页面源代码是什么样子(php解析完成后)?感谢大家的回复,但我仍然得到了“未定义”的警告。这里是页面来源:函数测试(arr){alert(arr)}/script>Array([0]=>c1[1]=>c2)@Alpa注释中的示例代码提示您正在使用
print\r($Array\u sample),而不是
echo$newArray。确保您使用的是
echo
而不是
print\r()
$newArray
(这是您的json编码字符串)而不是
$array\u sample
,它仍然是一个PHP-array。是的,$array\u sample是我的PHP数组,$newArray是我的json编码数组,并且我正在使用htmlentities($newArray)传递给javascript函数。是的,我使用print_r()打印数组。如果我使用echo,页面视图源代码将类似于:functiontest(arr){alert(arr);}/script>Array
[“c1”,“c2”]。尽管我将数组传递给函数Test(),但为什么函数Test()为空?@Alpa很抱歉,我无法复制您的问题。如果我完全复制并粘贴您的代码,它会将json输出到正确的位置。如果我将
htmlentities()
添加到您的代码中,它会将json输出到正确的位置。这告诉我的是,你没有使用你在这个问题中输入的代码,所以我有点茫然。我知道您没有使用问题中的代码,因为在您的问题中,
之后,现在我知道了。我现在得到一个数组。我从php代码传递给javascript函数的json数组,我在javascript中得到的json数组值。我已经用javascript打印了它,比如alert(arr);所以它像[“c1”,“c2”,“c3”],尽管我使用了htmlentities函数。如果我尝试只打印警报中的第一个值,比如警报(arr[0]);没有。实际上,在javascript中,我想分别处理每个arry元素。我该怎么做呢?谢谢大家的回复,但我仍然处于“未定义”状态。这里是页面来源:函数测试(arr){alert(arr)}/script>Array([0]=>c1[1]=>c2)@Alpa注释中的示例代码提示您正在使用
print\r($Array\u sample),而不是
echo$newArray。确保您使用的是
echo
而不是
print\r()
$newArray
(这是您的json编码字符串)而不是
$array\u sample
,它仍然是一个PHP-array。是的,$array\u sample是我的PHP数组,$newArray是我的json编码数组,并且我正在使用htmlentities($newArray)传递给javascript函数。是的,我使用print_r()打印数组。如果我使用echo,页面视图源代码将类似于:functiontest(arr){alert(arr);}/script>Array
[“c1”,“c2”]。尽管我将数组传递给函数Test(),但为什么函数Test()为空?@Alpa很抱歉,我无法复制您的问题。如果我完全复制并粘贴您的代码,它会将json输出到正确的位置。如果我将
htmlentities()
添加到您的代码中,它会将json输出到正确的位置。这告诉我的是,你没有使用你在这个问题中输入的代码,所以我有点茫然。我知道您没有使用问题中的代码,因为在您的问题中,
之后,现在我知道了。我现在得到一个数组。我从php代码传递给javascript函数的json数组,我在javascript中得到的json数组值。我已经用javascript打印了它,比如alert(arr);所以它像[“c1”,“c2”,“c3”],尽管我使用了htmlentities函数。如果我尝试只打印警报中的第一个值,比如警报(arr[0]);没有。实际上,在javascript中,我想分别处理每个arry元素。我该怎么做?