Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自PHP的JavaScript转义字符_Javascript_Php - Fatal编程技术网

来自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
向数据中添加转义字符。