SyntaxError:未终止的字符串文字

时间:2016-01-04 16:04:19

标签: javascript php

你好我有一个脚本php和javascript,我想从php调用我的函数javascript,但我有一个问题,当我的字符串有一个新的行,当我在firefox中打开firebug

这个错误是 “ SyntaxError:unterminated string literal

这是我的代码

<script>
function myfunction(mydata)
{
   alert(mydata)
}
</script>
<?php 
$data =nl2br("hello \n world");
echo '<a href="javascript:void(0)" onClick="myfunction(\'' . $data . '\')">Click</a>';
?>

帮助我,谢谢

固定

<script>
function myfunction(mydata)
{
   alert(mydata)
}
</script>
<?php 
$data = str_replace("\n", '\n', "hello \n world");
$data = preg_replace( "/\r|\n/", "", $data);
echo '<a href="javascript:void(0);" onClick="myfunction(\'' . $data . '\');">Click</a>';
?>

2 个答案:

答案 0 :(得分:2)

为字符串添加额外处理以删除换行符:

$data = nl2br("hello \n world");
$data = preg_replace( "/\r|\n/", "", $data );

然后回声

echo '<a href="javascript:void(0);" onClick="myfunction(\'' . $data . '\');"></a>';

而不是

echo '<a href="javascript:void(0)" onClick="myfunction($data)"></a>';
  • 在javascript ton变量之间添加和转义简单引号,将其视为字符串
  • 将你的var连接到输出的字符串,因为在简单的引号之间,它不会被解释(与双引号相反)。

然后,如果您只想在警报中直接添加换行符,则应执行以下操作:

$data = "hello \\nworld";
echo '<a href="javascript:void(0)" onClick="myfunction(\'' . $data . '\')">Click</a>';

如果要将HTML显示在警告框中,请考虑使用popin javascript插件。

答案 1 :(得分:0)

如评论中所述,单引号不会解释变量。您需要切换报价类型,并在数据变量周围添加引号:

echo "<a href='javascript:void(0)' onClick=\"myfunction('$data')\"></a>";