2012-01-16 145 views
0

以下效果很好,当不工作:字符串传递给JS

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>'; 

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

+0

你确定给出的源代码*完全相同吗?我也会尝试删除等号前的空格。 – 2012-01-16 16:19:27

+0

这是,你可以看到它...我只是复制粘贴。 – luqita 2012-01-16 16:20:29

+0

你究竟在哪里尝试使用它?我认为你是在一个JavaScript块内完成这项工作?我们可以从$ pickListFields中看到$ options吗? – dreamrunner 2012-01-16 16:28:15

回答

1

您正在使用PHP内部,而不是JavaScript代码的PHP标签:

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

应该是:

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

不知道这是否工作...它也在我的页面中添加文本。 – luqita 2012-01-16 16:49:27

+0

好吧,我不得不删除

0

尝试也许HTML编码的所有输出选项,可以有一些特殊字符的隐藏的地方