来自PHP的JavaScript转义字符
我有一个简单的脚本,如下所示来自PHP的JavaScript转义字符,javascript,php,Javascript,Php,我有一个简单的脚本,如下所示 <?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 cla
<?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>
var tr=“”;
控制台日志(tr);
但它在chrome中抛出了一个错误“uncaughtsyntaxerror:意外标记非法”。请注意,来自PHP的任何值中都没有特殊字符。我在这个页面中使用了prototype JS。是它导致了这个问题吗?因为我对此一无所知
如何在不使用insertRow
和insertCell
函数的情况下将其附加到表中?请帮帮我
请注意,来自PHP的任何值中都没有特殊字符
您有文字新行(在JS字符串文字中不允许)。正如dhidy所指出的,数据中还有未转义的“
字符,并且正在用”
字符分隔JS字符串
使用json\u encode
将PHP字符串转换为(适当转义的)JavaScript字符串文字。请注意,这将在数据周围生成引号字符,因此不应单独添加它们
var tr = <?php echo json_encode($tr); ?>;
var tr=;
请注意,来自PHP的任何值中都没有特殊字符
您有文字新行(在JS字符串文字中不允许)。正如dhidy所指出的,数据中还有未转义的“
字符,并且正在用”
字符分隔JS字符串
使用json\u encode
将PHP字符串转换为(适当转义的)JavaScript字符串文字。请注意,这将在数据周围生成引号字符,因此不应单独添加它们
var tr = <?php echo json_encode($tr); ?>;
var tr=;
在php脚本中使用双引号HTML,因此在js中必须使用单引号
<script>
var tr = '<?php echo $tr ?>';
console.log(tr);
</script>
var tr='';
控制台日志(tr);
错误示例
<script>
<?php $tr = '"' ?>
var tr = "<?php echo $tr ?>";
console.log(tr);
</script>
var tr=“”;
控制台日志(tr);
$tr
将出错,因为var tr=“”;
您在php脚本中使用双引号HTML,因此您必须在js中使用单引号
<script>
var tr = '<?php echo $tr ?>';
console.log(tr);
</script>
var tr='';
控制台日志(tr);
错误示例
<script>
<?php $tr = '"' ?>
var tr = "<?php echo $tr ?>";
console.log(tr);
</script>
var tr=“”;
控制台日志(tr);
$tr
将出错,因为var tr=“”代码>您需要转义PHP字符串中的双引号,因为您在JavaScript中将它们包装为双引号。您还需要去掉新行。您需要对PHP字符串中的双引号进行转义,因为您在JavaScript中将它们包装为双引号。你还需要去掉新行。这是因为两个原因
< P>)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>
var tr=”
";
控制台日志(tr);
哪个是错误
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>
var tr=“”;
控制台日志(tr);
原因有二
< P>)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>
var tr=”
";
控制台日志(tr);
哪个是错误
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>
var tr=“”;
控制台日志(tr);
echo$tr怎么样代码>?@DrixsonOseña echo打印正确如何echo$tr
?@DrixsonOseña echo打印正确字符串中确实也有“
字符会导致问题(虽然我的解决方案也解决了这个问题),但您的方法不会解决新行字符的附加问题。确实还有”
字符串中的字符会导致问题(虽然我的解决方案也解决了这个问题),但您的方法不会解决新行字符的额外问题。太好了!但是php应该在双引号内打印,对吗?它以前不工作的原因可能是什么?正如我在回答中所说,json\u encode
为数据添加转义字符。太好了!但是php应该在双引号内打印,对吗?它以前不起作用的原因可能是什么?正如我在回答中所说,json_encode
向数据中添加转义字符。