我有如下简单的脚本,
<?php
$actionbutton = '<input type="button" onclick="document.location.href=\'/backoffice_dev.php/currency/edit/EUR\';" value="Edit">';
$tr = '<tr><td>'.$addNewCurrencyPOST["id"].'</td>
<td><div class="led on"></div></td>
<td>'.$addNewCurrencyPOST["symbol"].'</td>
<td>'.$addNewCurrencyPOST["symbolhtml"].'</td>
<td>'.$addNewCurrencyPOST["usdrate"].'</td>
<td>'.$addNewCurrencyPOST["eurrate"].'</td>
<td>'.$actionbutton.'</td></tr>';
?>
<script>
var tr = "<?php echo $tr ?>";
console.log(tr);
</script>
但它在chrome中抛出了一个错误“Uncaught SyntaxError:Unexpected token ILLEGAL”。请注意,来自PHP的任何值都没有特殊字符。我在这个页面中使用了原型JS。这是导致这个问题吗?因为我对此没有任何了解。
如何在不使用insertRow
和insertCell
函数的情况下将其附加到表中?请帮帮我们..
答案 0 :(得分:3)
请注意,PHP中的任何值都没有特殊字符。
你有新的文字行(JS字符串文字中不允许这样做)。正如dhidy指出的那样,你在数据中也有未转义的"
个字符,并用"
个字符分隔JS字符串。
使用json_encode
将PHP字符串转换为(适当转义的)JavaScript字符串文字。请注意,将生成数据周围的引号字符,因此您不应单独添加它们。
var tr = <?php echo json_encode($tr); ?>;
答案 1 :(得分:1)
这是由于两个原因
a)javascript中的新行字符被视为语句终止符,而不是在php
中因此您的代码回显
<script>
var tr = "<tr><td></td>
<td><div class="led on"></div></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><input type="button" onclick="document.location.href='/backoffice_dev.php/currency/edit/EUR';" value="Edit"></td></tr>";
console.log(tr);
</script>
哪个是错误
b)没有正确封闭“,”字符,用户转义序列来执行此操作,如下所示
<?php
$actionbutton = '<input type=\'button\' onclick=\'document.location.href=\'/backoffice_dev.php/currency/edit/EUR\';\' value=\'Edit\'>';
$tr .= '<tr><td>'.$addNewCurrencyPOST["id"].'</td>';
$tr .= '<td><div class=\'led on\'></div></td>';
$tr .= '<td>'.$addNewCurrencyPOST["symbol"].'</td>';
$tr .= '<td>'.$addNewCurrencyPOST["symbolhtml"].'</td>';
$tr .= '<td>'.$addNewCurrencyPOST["usdrate"].'</td>';
$tr .= '<td>'.$addNewCurrencyPOST["eurrate"].'</td>';
$tr .= '<td>'.$actionbutton.'</td></tr>';
?>
<script>
var tr = "<?php echo $tr ;?>";
console.log(tr);
</script>
答案 2 :(得分:0)
你在php脚本中使用双引号HTML,所以你必须在你的js中使用单引号。
<script>
var tr = '<?php echo $tr ?>';
console.log(tr);
</script>
错误示例
<script>
<?php $tr = '"' ?>
var tr = "<?php echo $tr ?>";
console.log(tr);
</script>
$tr
会出错,因为var tr = """;
答案 3 :(得分:0)
您需要在PHP字符串中转义双引号,因为您要在JavaScript中用双引号将它们包装起来。你还需要摆脱新的界限。