У меня есть json_encoded PHP массив, который я хочу передать в Javascript:Не удается передать PHP массив Javascript
$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
И Javascript должен работать, когда я нажимаю на «108», показывая предупреждение элементов массива.
Как это исправить?
Вот 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);
}
UPDATE: Я удалил 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], он работает, но не со строковыми.
UPDATE2:
Хорошо, я сумел сделать работу Javascript, заменив двойные кавычки в json_encoded массиве с одинарными кавычками:
$unmatched = str_replace('"', '\'', $unmatched);
Но я не понимаю, почему мне нужно сделать что.
РНР массив не является Java-массив. Вы должны рассмотреть возможность изменения вашего события show_array() 'onclick, чтобы включить' json_encode() '. – Lance
Я использовал json_encode, когда я определил $ unmatched. –
Я верю var name1 = val1, name2 = val2 ...; это правильный синтаксис. http://stackoverflow.com/questions/694102/declaring-multiple-variables-in-javascript –