传递给JS时,数组中的字符串不起作用

时间:2012-01-16 16:18:08

标签: php javascript jquery

以下效果很好:

var options = '<select><option value ="Unknown">Unknown</option><option value ="Yes">Yes</option><option value ="No">No</option><option value ="Both">Both</option></select>';
alert(options)

但是,如果该字符串是通过PHP foreach生成的,则无法识别变量选项,因此我无法使用JS。例如:

<?php foreach($pickListFields as $field_id => $options): ?>
    <?php 
        $options_array = explode("\n", $options); 
        $options_select = '<select>';
        foreach($options_array as $k => $option) {
            $options_select .= '<option value ="' . $option . '">' . $option . '</option>';
        }
        $options_select .= '</select>';
    ?>
    var options = '<?= $options_select ?>';
<?php endforeach; ?>

上面生成的变量选项不起作用,即使我看到Firefox的源代码我可以看到var选项是:

var options = '<select><option value ="Unknown">Unknown</option><option value ="Yes">Yes</option><option value ="No">No</option><option value ="Both">Both</option></select>';

为什么它不能被使用,如果它与第一个例子相同?我无法提醒,或将其分配给一个字段,但我可以用第一个例子。

2 个答案:

答案 0 :(得分:1)

你在php中使用php标签而不是javascript标签:

var options = '<?= $options_select ?>';

应该是:

echo '<script language="javascript" type="text/javascript">var options="' . $options_select . '";</script>';

答案 1 :(得分:0)

尝试可能html编码所有输出选项,可以在某处隐藏一些特殊字符