【问题标题】:passing PHP string to JavaScript: unterminated string literal将 PHP 字符串传递给 JavaScript:未终止的字符串文字
【发布时间】:2012-10-06 09:37:20
【问题描述】:

我将 PHP var 分配给我的 javascript var 并通过 ajax-jQuery,但我的 php 变量包含换行符 我已经替换为<br>

e.g.            $values1 = 'abc<br>pqr<br>xyz';  $values2 = 'xyz<br>lmn';
javascript -    var data = 'val1=<?php echo $values; ?>&val2=<?php echo $values2; ?>';

然后是 ajax 脚本将数据发布到 PHP 文件

但是当我在控制台上打印此数据时,它给了我错误- SyntaxError: unterminated string literal.

谁能帮忙?

【问题讨论】:

标签: php javascript ajax


【解决方案1】:

你的 JS 代码:

var data = 'val1=<?php echo $values1; ?>&val2=<?php echo $values2; ?>';

如果您的一个或多个 PHP 变量 $values1$values2 包含单引号 ',则会给出 Javascript 语法错误。

通过将所有单引号替换为其他内容,确保您的 PHP 变量中不包含单引号,否则使用双引号 " 来创建 JS var,如下所示:

var data = "val1=<?php echo $values1; ?>&val2=<?php echo $values2; ?>";

提供的 PHP 变量不包含双引号。

【讨论】:

  • 我没有将 ajax 数据发布到 php 的问题,但即使我尝试在控制台上打印,例如console.log('') 它给出错误
  • 你需要像这样打印它:console.log("&lt;?php echo $values1; ?&gt;") 实际上。
  • 对不起,我的错误在这里,我已经在使用console.log(''),还是同样的错误
  • 你可以这样打印吗:console.log("&lt;?php echo $values1; ?&gt;"); 注意我使用的是" 而不是'
  • 您在 shell 或浏览器中查看此输出?如果在 shell 内,那么这确实是问题的原因,因为您的字符串包含换行符。
【解决方案2】:

首先,你有一个错字,可能会导致错误:

// --------------------------------v
var data = 'val1=<?php echo $values1; ?>&val2=<?php echo $values2; ?>';

那么,我建议你使用 object 作为 data 参数来进行 Ajax 请求:

var data = {
    val1: '<?php echo $values1; ?>',
    val2: '<?php echo $values2; ?>'
};

另外,最好在 $values1$values2 变量中转义单引号 '

【讨论】:

  • 感谢 Vision,但我不认为它的错字,因为如果我删除
    ,它就可以工作。
  • 我没有将 ajax 数据发布到 php 的问题,但即使我尝试在控制台上打印,例如console.log('') 它给出错误
  • 您应该用引号将值括起来:console.log('&lt;?php echo $values1; ?&gt;')
  • 对不起,我的错误在这里,我已经在使用console.log(''),还是同样的错误
  • 尝试添加斜线:console.log('&lt;?php echo addslashes($values1); ?&gt;');.
【解决方案3】:

尝试使用&lt;br /&gt; 而不是&lt;br&gt;。这里只是猜测,没有测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    相关资源
    最近更新 更多