将PHP变量发送到JavaScript函数

15

我有一个生成变量的php文件,我想把该变量放到一个JavaScript函数中,并通过主页面上的onclick调用该函数。从PHP到JavaScript是否可能传递?


1
每次点击后是否需要不同的内容(例如,生成当前服务器端时间的脚本)?如果是这样,您可能需要使用Ajax - apsillers
6个回答

24

你可以做以下的事情:

<script type='text/javascript'>
    document.body.onclick(function(){
        var myVariable = <?php echo(json_encode($myVariable)); ?>;
    };
</script>

我该如何指定从哪个 PHP 文件获取变量? - user1879926
1
为什么需要使用json_encode呢?为什么不能简单地echo $myVariable呢? - Tarida George
@George02 json_encode会转义字符串,使其在JavaScript中使用时更安全。 - DiverseAndRemote.com
当在一个单独的“js”文件中的函数内使用时,会出现“意外令牌'<'”错误。 - quanta

6

只需要编写:

<script>
    var my_variable_name = <?php echo(json_encode($php_string)); ?>;
</script>

现在,只需在以上代码下方的任何位置使用名称为my_variable_name的JavaScript变量。


如果字符串包含双引号怎么办? - mickmackusa
在这种情况下,这个解决方案会失效。如果字符串可能包含双引号,你必须以某种方式对字符串进行编码,例如使用JSON,就像接受的答案所建议的那样。 - Hubro
1
如果您打算将此答案保留在页面上,似乎值得进行[编辑]。 - mickmackusa

5
您的JavaScript代码必须定义在PHP解析的文件中。
例如,在index.php中,您可以这样写:
<?php
$time = time();
?>
<script>
    document.write(<?php echo $time; ?>);
</script>

2
如果我理解你的意思正确,你应该能够按照以下方式做一些事情:
function clicked() {
    var someVariable="<?php echo $phpVariable; ?>";
}

1
你需要用分号结束它。 - mplungjan
@用户名 待定 我需要把整个 PHP 文件放在括号里吗?如果不是,我该如何指定变量来自哪个 PHP 文件? - user1879926

1
一个很好的选择是使用jQuery/AJAX。看看这些例子并在您的服务器上尝试它们。在这个例子中,在FILE1.php中,请注意它传递了一个空值。如果您愿意,您可以传递一个值,可能会像这样(假设javascript变量名为usernamepassword):
data: 'username='+username+'&password='+password,

在FILE2.php的示例中,您可以像这样检索这些值:
$uname = $_POST['username'];
$pword = $_POST['password'];

然后进行MySQL查找并返回以下值:

echo 'You are logged in';

这将向FILE1.php中的成功函数传递消息您已登录,并且消息字符串将存储在名为"data"的变量中。因此,在成功函数中的alert(data);行将警报该消息。当然,您可以echo任何您喜欢的内容,甚至是大量的HTML,例如整个表格结构。

这里有另一个很好的例子供参考。

方法是创建您的表单,然后使用jQuery检测按钮按下并通过AJAX将数据提交到辅助PHP文件。上面的示例展示了如何执行此操作。

辅助PHP文件接收变量(如果发送了任何变量),并返回响应(您选择发送的任何内容)。该响应然后出现在您的AJAX调用的Success:部分中作为"data"(在这些示例中)。

jQuery/AJAX代码是JavaScript,因此您有两个选项:您可以将其放置在主PHP文档中的<script type="text/javascript"></script>标签内,或者您可以在PHP文档底部包含<?php include "my_javascript_stuff.js"; ?>。如果您正在使用jQuery,请不要忘记像示例中那样包含jQuery库。

在您的情况下,听起来您可以几乎镜像我建议的第一个示例,在AJAX成功函数中发送无数据并接收响应。但是,您必须在成功函数内完成对该数据的任何操作。一开始可能有点奇怪,但它确实有效。


0
你可以将 PHP 的值传递给 JavaScript。PHP 将在服务器端执行,因此该值将被计算,然后您可以将其回显到包含 JavaScript 的 HTML 中。JavaScript 将使用 PHP 在服务器端计算的值在客户端浏览器中执行。
<script type="text/javascript">
    // Do something in JavaScript
    var x = <?php echo $calculatedValue; ?>;
    // etc..
</script>

<button onclick='bookNow("<?php echo $id; ?>")'>立即预订</button> - FAZAL HAKIM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接