我如何使用JavaScriptvariables作为PHPvariables?

我试图将PHPvariables包含到PHP代码中,但是我遇到了问题。 当一个button被点击时,下面的函数被调用:

<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> 

可能吗?

PHP运行在服务器端。 JavaScript在请求页面的用户的浏览器中运行在客户端。 在执行JavaScript时,无论如何都不能访问服务器上的PHP。 请阅读这篇文章,详细介绍客户端与服务器端编码 。

简而言之就是:

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

在你的情况下,PHP会将JS代码写入页面,所以当页面在浏览器中被渲染时,它可以被执行。 到那个时候,你的JS片段中的PHP部分不再存在。 它已经在服务器上执行了。 它创build了一个包含SQL查询string的variables$result 。 你没有使用它,所以当页面被发送回你的浏览器,它已经消失了。 当页面在浏览器中呈现时,请查看源代码。 你会发现在你放置PHP代码的位置没有任何东西。

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

  • 做一个redirect到PHP脚本或
  • 对PHP脚本进行AJAX调用

用你想要插入数据库的值。

 <script type="text/javascript"> var jvalue = 'this is javascript value'; <?php $abc = "<script>document.write(jvalue)</script>"?> </script> <?php echo 'php_'.$abc;?> 

您似乎混淆了客户端和服务器端代码。 当button被点击时,你需要发送(发布,获取)variables到php可以执行的服务器。 您可以提交页面,也可以使用ajax调用来提交数据。 -don

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

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

如果你想要返回任何东西,你需要创build一个新的HTTP请求,并将数据包含在查询string(GET数据)或消息正文(POST数据)中。

你可以这样做:

  • 设置位置(仅限GET)
  • 提交表单(使用FormElement.submit()方法)
  • 使用XMLHttpRequest对象(通常称为Ajax的技术)。 各种各样的库在这里为你做一些繁重的工作,比如YUI或者jQuery 。

你select哪个选项,PHP本质上是一样的。 读取$_GET$_POST ,运行你的数据库代码,然后返回一些数据到客户端。

几个星期前,我和你们有同样的问题。 但是我发明了一个在PHP和JavaScript之间交换variables的精彩解决scheme。 它对我很好:

  1. 在HTML页面上创build一个隐藏的表单

  2. 以隐藏的forms创build文本框或文本区域

  3. 将所有代码写入脚本之后,将variables的最终值存储在该文本框中

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

我希望这个技巧适合你。

你可以采取这样的所有值:

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

你可以做你想做的,但不是那样的。 你需要做的是从JavaScript向AJAX请求返回到一个单独的PHP脚本可以执行数据库操作的服务器。