【问题标题】:Convert new line to correct Javascript value将新行转换为正确的 Javascript 值
【发布时间】:2012-03-01 20:50:53
【问题描述】:

我有一系列数据,我想将它们放入 javascript 中的数组中。我使用Wordpress作为cms,我的数据看起来像这样(帖子的内容):

line1
line2
line3

但是,当我尝试从帖子中查找数据时,我在 javascript 中看到了这段代码,比如说 3 个帖子:

var locations=['line1
line2
line3','line1
line2
line3','line1
line2
line3'];

当我查看控制台时收到此错误:Uncaught SyntaxError: Unexpected token ILLEGAL。我在这里搜索了很多答案,但我没有成功地用它折断腿。但是我在内容的 HTML 选项卡中查看了没有<br/>,所以新行不是 html 代码。

我也尝试过像这样在php中转义特殊字符,但它会弹出同样的错误:

echo '\''.htmlspecialchars (get_the_content()).'\',';

但是,如果内容在一行中,例如“一些文本”,它似乎运行正常。

有什么想法吗?

谢谢!

【问题讨论】:

  • 我们可以在通过 PHP 脚本运行之前格式化数据,清除特殊字符吗?
  • 我猜是这样......你会怎么做?我以非常基本的方式运行get_posts( $args ),所以没有复杂的东西。
  • 这意味着在将输入提交到服务器之前,您无能为力,对吧?您只使用 PHP。已经有答案了。
  • 其实内容应该是这样的。

标签: php javascript newline syntax-error


【解决方案1】:

在输出之前使用 json_encode() 将其转换为 JavaScript 文字。

【讨论】:

  • 好一个,但是内容显示在一行中。我终于做了这个array_push( $locations, nl2br ( get_the_content()) ); 然后echo 'var locations='. json_encode($locations).';' 做得很好。
【解决方案2】:

其实这是一个php问题。 Javascript 无法自行从此类语法错误中“恢复”。

echo "'".str_replace(
    array("'", "\n", "\r"),
    array("\\'", "\\n", "\\r"),
    get_the_content()
)."'";

【讨论】:

  • 其实这个我觉得nl2br效果更好,但是谢谢你的起点!
  • 是的,如果你想把它输出成html。毕竟,json_encode 的想法更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多