服务器端生成的javascript数组抛出未终止的字符串文字

时间:2013-11-16 17:00:39

标签: javascript php arrays syntax

这是我在后端生成它的方式:

$scr = '';
    forech(){
        $scr .= '['.$key.',"'.$address.'",'.$lat.','.$lng.',"'.$post_title.'","'.$post_image.'","'.$post_url.'","'.$default_price.'","'.$excerpt.' "],';
    }

这就是我输出的地方:

var events = [<?php echo $scr; ?>];

但是我在firebug控制台中遇到了这个错误(取决于内容,因为其他内容没有使用相同的代码发生:

SyntaxError: unterminated string literal


ent/encantadora-casa-moditerranea-con-vistas-al-mar/","118","

(通过查看源代码,我可以在该代码后看到换行符)

以某种方式逃脱的任何方式?

3 个答案:

答案 0 :(得分:4)

当您拥有json_encode()时,无需将自己的序列化推广到JavaScript。只需将整个输出转储到您的页面中,然后再担心逃避。

var events = <?php echo json_encode($my_array_thing); ?>;

答案 1 :(得分:2)

我建议你将所需的所有变量放入这样的数组中:

$a = array(1,true,null,"x",0.2, array("some","deven deeper","nested values"));

然后使用json_encode

var events = <?php echo json_encode($a); ?>;

答案 2 :(得分:0)

我总是建议采取更清洁的方法。

<script type="application/json" id="yourArray">
<?php echo json_encode($yourArray); ?>
</script>

...

<script>

  var events = $.parseJSON($('#yourArray').text());

</script>

这样你的javascript代码就完全脱离了PHP。