转储到JavaScript数组的HTML文本会破坏我的代码

时间:2011-12-16 09:57:46

标签: php javascript arrays string push

我正在尝试将PHP数组转储到JavaScript数组。 (不使用任何额外的扩展) 到目前为止,我已设法转储它从数据库中检索的文本项的ID和标题,但是一旦我尝试转储文本项内容,整个脚本就会中断。

<script type="text/javascript">
var idList=new Array();
var titleList=new Array();
var contentList=new Array();
<?php
foreach($list["id"] as $index => $value)
{
    $content = htmlentities($list["tekst"][$index], ENT_QUOTES);
    echo('idList.push('.$list["id"][$index].');');
    echo('titleList.push("'.$list["title"][$index].'");');
    //echo('contentList.push("'.$content.'");');
}
?>
</script>

打破整个脚本的行已被注释掉。 这是推送到contentList的字符串之一:

&lt;p&gt;Ik ben onweer. ROMMELDEBOMMEL!&lt;/p&gt;
&lt;p&gt;Ik ben donker en duister maar ook heel belangrijk voor de natuur.&lt;/p&gt;
&lt;p&gt;ofzoiets... geen zin. lat0rzzzzzzzzzzzzzzzzzzzzzz&lt;/p&gt;

这是荷兰语,但我认为你明白了。


编辑:我尝试使用'linebreaks'问题中建议的方法,但代码仍然中断。这是它输出的代码:

contentList.push("&lt;p&gt;Ik ben onweer. ROMMELDEBOMMEL!&lt;/p&gt;"+
"&lt;p&gt;Ik ben donker en duister maar ook heel belangrijk voor de natuur.&lt;/p&gt;"+
"&lt;p&gt;ofzoiets... geen zin. lat0rzzzzzzzzzzzzzzzzzzzzzz&lt;/p&gt;");

编辑#2:我在JS控制台中发现了这个错误“Uncaught SyntaxError:Unexpected token ILLEGAL”


编辑#3:切换到AJAX方法。这使得这个脚本过时了。谢谢你的帮助。 ;)

4 个答案:

答案 0 :(得分:1)

问题是Javascript字符串必须以同一行开头和结尾,除非您转义换行符。因此,您需要删除换行符(如果它们不重要,只需删除,否则请替换为\n<br />或任何对您的上下文有意义的内容。

信息:http://www.willmaster.com/blog/javascript/strings-line-breaks.php

答案 1 :(得分:1)

Javascript字符串不能包含其中的换行符 - 请查看How do I break a string across more than one line of code in JavaScript?以了解各种方法。

答案 2 :(得分:1)

您要使用json_encode吗?

答案 3 :(得分:1)

尝试使用此功能

http://de3.php.net/manual/en/function.nl2br.php

或:

str_replace("\n","");

如果你想在js中保持代码行中断,字符串中的每一行都必须以\n\结束

var string = 'test\n\
\n\
              testtestest\n\';