如何将JavaScript变量用作PHP变量?

时间:2010-03-04 12:33:21

标签: php javascript

我正在尝试将JavaScript变量作为PHP变量包含在PHP代码中,但我遇到了这样的问题。单击按钮时,将调用以下函数:

<script type="text/javascript">
    function addTraining(leve, name, date)
    {
        var level_var = document.getElementById(leve);
        var training_name_var = document.getElementById(name);
        var training_date_var = document.getElementById(date);

        <?php
            $result = "INSERT INTO training(level, school_name, training_date) VALUES('level_var', 'training_name_var', 'training_date_var')" or die("Query not possible.");
        ?>

</script>

有可能吗?

7 个答案:

答案 0 :(得分:37)

PHP在服务器端运行。 JavaScript在请求页面的用户的浏览器中运行客户端。在执行JavaScript时,无论如何都无法访问服务器上的PHP。请阅读此文章,详细了解client-side vs server-side coding

简而言之,这是:

  • 您在桌面下的计算机上点击浏览器中的链接
  • 浏览器创建HTTP请求并将其发送到Internet上的服务器
  • 服务器检查他是否可以处理请求
  • 如果请求是针对PHP页面的,则启动PHP解释器
  • PHP解释器将在您请求的页面中运行所有PHP代码
  • PHP解释器不会运行任何JS代码,因为它没有任何关于它的线索
  • 服务器会将解释器汇编的页面发送回您的浏览器
  • 您的浏览器将呈现该页面并将其显示给您
  • JavaScript在您的计算机上执行

在您的情况下,PHP会将JS代码写入页面,因此可以在浏览器中呈现页面时执行。到那时,JS片段中的PHP部分不再存在。它已经在服务器上执行了。它创建了一个包含SQL查询字符串的变量$result。你没有使用它,所以当页面发送回你的浏览器时,它已经消失了。在浏览器中呈现页面时,请查看源代码。你会看到你放置PHP代码的位置没有任何内容。

做你想做的事的唯一方法是:

  • 重定向到PHP脚本或
  • 对PHP脚本执行AJAX调用

包含要插入数据库的值。

答案 1 :(得分:22)

<script type="text/javascript">
var jvalue = 'this is javascript value';

<?php $abc = "<script>document.write(jvalue)</script>"?>   
</script>
<?php echo  'php_'.$abc;?>

答案 2 :(得分:4)

您似乎混淆了客户端和服务器端代码。单击该按钮时,您需要将变量发送(发布,获取)到可以执行php的服务器。您可以提交页面或使用ajax调用来仅提交数据。 -don

答案 3 :(得分:3)

PHP在服务器上运行。它输出一些文本(通常)。然后由客户端解析。

在客户端解析期间和之后,JavaScript运行。在这个阶段,PHP脚本做任何事都为时已晚。

如果你想获得任何回复PHP的信息,你需要发一个新的HTTP请求并在其中包含数据(在查询字符串(GET数据)或消息体(POST数据)中。

您可以通过以下方式执行此操作:

  • 设置位置(仅限GET)
  • 提交表单(使用FormElement.submit()方法)
  • 使用XMLHttpRequest对象(通常称为Ajax的技术)。各种图书馆为您做了一些繁重的工作,例如: YUIjQuery

您选择哪种选项,PHP基本相同。从$_GET$_POST读取,运行数据库代码,然后将一些数据返回给客户端。

答案 4 :(得分:1)

几周前我和你的一样有同样的问题;但我发明了一个在PHP和JavaScript之间交换变量的出色解决方案。它很适合我:

  1. 在HTML网页上创建隐藏表单

  2. 以隐藏形式创建文本框或文本区域

  3. 在脚本中编写完所有代码后,将变量的最终值存储在该文本框中

  4. 在PHP中使用$ _REQUEST ['textbox name']行来访问JavaScript变量的值。

  5. 我希望这个技巧适合你。

答案 5 :(得分:0)

你可以做你想做的事,但不是那样的。您需要做的是从JavaScript发出AJAX请求回到服务器,其中单独的PHP脚本可以执行数据库操作。

答案 6 :(得分:0)

您可以采用以下所有值:

$abc = "<script>document.getElementByID('yourid').value</script>";