将字符串PHP传递给Javascript Spaces

时间:2016-04-05 23:43:54

标签: javascript php whitespace

我正在尝试将一个字符串传递给PHP中的javascript但是我的失败很糟糕。从测试中我可以看到它使我的测试失败的空白。如何编码以正确传递给javascript我尝试了%20,而且似乎没有什么工作。

完整来源

  <script async  src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">

function DemoOne(text) {
 $('#PageView').load('test.php?text=' + text);
}
</script>


<?php
$message="hello";

echo "  <a href=\"javascript:DemoOne('$message');\" ><input class='btn' type='button' value='Test'></a>     
<div id='PageView'></div>";

?>

测试输出test.php

<?php
echo $_GET['text'];
?>      

关注

添加下面的代码仍然失败,似乎只删除空格将允许上面的例子工作。

a href=\"javascript:DemoOne(".htmlspecialchars(json_encode($message)).");\" ><input type='button' value='Submit'></a>   
<div id='PageView'></div>

1 个答案:

答案 0 :(得分:2)

这与空间无关。你没有给我们完整的代码。我猜测HTML在回声中?如果是这样,您需要这样做:

echo "<a href=\"javascript:DemoOne(".htmlspecialchars(json_encode($message)).");\" ><input type='button' value='Submit'></a>   
<div id='PageView'></div>";

即。 json_encode您传递给JavaScript的任何数据。您还需要将其转义为HTML,因为它位于属性中而不是<script>标记。

您还需要转义URL的查询参数。

我修改了您的代码以修复编码问题:

  <script async  src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">

function DemoOne(text) {
 $('#PageView').load('test.php?text=' + encodeURIComponent(text));
}
</script>


<?php
$message="hello";

echo "  <a href=\"javascript:DemoOne(".htmlspecialchars(json_encode($message)).");\" ><input class='btn' type='button' value='Test'></a>     
<div id='PageView'></div>";

或者,让jQuery进行转义:

function DemoOne(text) {
 $('#PageView').load('test.php', {text:text});
}