我有一个要传递给 Javascript 的 json_encoded PHP 数组:
$unmatched = json_encode(compareCourseNum($GLOBALS['parsed_courseDetails'], get_course_num_array($GLOBALS['bulletin_text'])));
$GLOBALS['unmatched'] = $unmatched;
print "<center><strong>Total number of courses parsed: $number_of_courses/" . "<span onClick=\"show_array(<?php echo $unmatched; ?>);\">" . count_courses($GLOBALS['bulletin_text']) . "</span>" . "</strong></center>";
然而,当我运行脚本时,打印的是这样的:
Total number of courses parsed: 98/);">108
而且 Javascript 也不起作用。应该打印的是这样的:
Total number of courses parsed: 98/108
当我单击“108”时,Javascript 应该可以通过显示数组元素的警报来工作。
我怎样才能解决这个问题?
这是Javascript:
function show_array (array) {
//var array = <?php echo $unmatched; ?>;
alert();
var result = "",
length = array.length;
for (var i = 0; i < length; ++i) {
result += array[i] + "\n";
}
alert(result);
}
更新:我删除了 php 标签和分号,所以现在是
"<span onClick="show_array( $unmatched);">"
但是 show_array 仍然没有运行!当我查看页面源时,我看到了这个:
"<span onClick="show_array( ["220","221","242E","249B","250","254","255","256","256S","272A","285"]);">"
请帮忙?我知道 show_array 的代码没有问题,但是数组输入有问题,因为当我传递一个像 [133, 234, 424] 这样的数字数组时,它可以工作,但不适用于字符串。
更新2:
好的,我设法通过用单引号替换 json_encoded 数组中的双引号来使 Javascript 工作:
$unmatched = str_replace('"', '\'', $unmatched);
但我不明白为什么我需要这样做。