14

我有一个生成变量的 php 文件,我希望将变量放入一个 javascript 函数中,该函数由主页上的 onclick 调用。这可以从 PHP 发送到 javascript 吗?

4

6 回答 6

22

您可以执行以下操作:

<script type='text/javascript'>
    document.body.onclick(function(){
        var myVariable = <?php echo(json_encode($myVariable)); ?>;
    };
</script>
于 2012-12-05T20:31:01.790 回答
6

写吧:

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

现在它可以作为 JavaScript 变量my_variable_name在上述代码下方的任何位置使用。

于 2012-12-05T20:31:38.150 回答
5

您的 JavaScript 必须在 PHP 解析的文件中定义。

例如,在 index.php 中,您可以放置

<?php
$time = time();
?>
<script>
    document.write(<?php echo $time; ?>);
</script>
于 2012-12-05T20:30:42.073 回答
2

如果我对您的理解正确,您应该能够按照以下方式做一些事情:

function clicked() {
    var someVariable="<?php echo $phpVariable; ?>";
}
于 2012-12-05T20:30:09.900 回答
1

一个很好的选择是使用 jQuery/AJAX。 查看这些示例并在您的服务器上试用它们。在此示例中,在 FILE1.php 中,请注意它传递了一个空白值。如果你愿意,你可以传递一个值,它可能看起来像这样(假设 javascript vars 称为usernameand password

data: 'username='+username+'&password='+password,

在 FILE2.php 示例中,您将检索这些值,如下所示:

$uname = $_POST['username'];
$pword = $_POST['password'];

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

echo 'You are logged in';

这会将消息传递You are logged in给 FILE1.php 中的成功函数,并且消息字符串将存储在名为“data”的变量中。因此,alert(data);成功函数中的行会提醒该消息。当然,您可以选择echo任何您喜欢的内容,甚至是大量的 HTML,例如整个表格结构。

这是另一个值得回顾的好例子。

方法是创建表单,然后使用 jQuery 检测按钮按下并通过 AJAX 将数据提交到辅助 PHP 文件。上面的例子展示了如何做到这一点。

辅助 PHP 文件接收变量(如果已发送)并返回响应(无论您选择发送什么)。然后,该响应将作为“数据”出现在您的 AJAX 调用的 Success: 部分中(在这些示例中)。

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

在您的情况下,听起来您几乎可以反映我建议的第一个示例,不发送数据并在 AJAX 成功函数中接收响应。但是,无论您需要对这些数据做什么,都必须在 success 函数中执行。起初看起来有点奇怪,但它确实有效。

于 2012-12-05T20:41:26.377 回答
0

您可以将 PHP 值传递给 JavaScript。PHP 将在服务器端执行,因此将计算该值,然后您可以将其回显到包含 javascript 的 HTML。然后,javascript 将在客户端浏览器中执行,并使用 PHP 在服务器端计算的值。

<script type="text/javascript">
    // Do something in JavaScript
    var x = <?php echo $calculatedValue; ?>;
    // etc..
</script>
于 2012-12-05T20:31:40.240 回答