将字符串PHP传递到Javascript空间


Passing string PHP to Javascript Spaces

我试图将一个字符串从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>

它与空间无关。你还没有给我们完整的代码。我猜HTML在echo中?如果是这样,你需要这样做:
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});
}