Javascript SyntaxError:带有JSON数组的未终止字符串文字

Javascript SyntaxError:带有JSON数组的未终止字符串文字,javascript,json,Javascript,Json,所以我 var newfavz = 'Array ( [0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "] [1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "] [2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "] ) '; 在我的console.log上,但不知何故出现了一个语法错误:unterminated string literal。我环顾四周,尝试了一

所以我

 var newfavz = 'Array (


[0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]
[1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]
[2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]

)
';
在我的console.log上,但不知何故出现了一个语法错误:unterminated string literal。我环顾四周,尝试了一些方法,比如str_replace“/”和“/”或类似正则表达式的.replace(/^/+//g,”);因为JavaScript似乎不允许将字符串分成多行或类似的内容

这一切都是从这样的SQL查询开始的

$favurl = [];
$favquery = "SELECT * FROM userfavs WHERE users = '$username'";
$favresult = mysqli_query($conn, $favquery);

while($row = mysqli_fetch_assoc($favresult)) {

array_push($favurl, $row['fav_id']);
后来,我做到了

var newfavz = <?php print_r ($favurl); ?>
var newfavz=
这导致了上述情况


有什么方法可以解决语法错误吗?谢谢

原因js中不允许使用多行字符串:

"A
 B"
是一个语法错误。您可以删除所有换行符并将其替换为\n,或者使用模板文字:

`A
 B`
在代码中:

var newfavz =` <?php print_r ($favurl); ?>`;
var newfavz=`;
关于这个错误,我想说的太多了。但是字符串仍然不可用,需要对其进行分析。查看JSON或编写自己的小解析器。

或者使用ES6:

或者使用反斜杠:

var newfavz = 'Array (\n\
\n\
\n\
[0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n\
[1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n\
[2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n\
\n\
)\
';
或连接:

var newfavz = 'Array (\n' +
  '\n' +
  '\n' +
  '[0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n' +
  '[1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n' +
  '[2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\n' +
  '\n' +
  ')\n';

\n
用于表示一个
换行符

您必须在每行末尾加一个反斜杠才能有一个多行字符串:

var newfavz = 'Array (\
[0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\
[1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\
[2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\
)\
';

echo
json\u encode的结果而不是使用
print\r
。打印的字符串在JavaScript环境中是无用的,检查啊抱歉我在调试时使用了print_r:)要添加到这个,在服务器上,在传递给JS之前,应该使用json_encode()方法将数组编码为json对象。嘿,我忘了将此添加到问题中,但在将数据插入SQL数据库之前,我确实使用了JSON_编码方法。到目前为止,我发现消除这个未终止字符串文字错误的唯一方法是执行另一个JSON_编码,这在我看来相当愚蠢。谢谢你!我使用了``字符,效果非常好!
var newfavz = 'Array (\
[0] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\
[1] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\
[2] => [" 6 "," 1 "," 2 "," 5 "," 3 "," 4 "]\
)\
';