如何使用php访问javascript变量并将其存储到数据库中

时间:2016-02-07 14:21:36

标签: javascript php jquery mysql

我正在寻找一种方法来了解如何访问javascript变量并使用php代码将其存储在数据库中而不使用Ajax。下面的代码是我目前正在处理的精简版本:

<script>
 function secondPassed() {
   document.getElementById('time').value = parseInt(document.getElementById('time').value) + 1;
   int val = 0;
   num = "<?php $insert = mysql_query('INSERT INTO tbl_timer VALUES(\'\', \"."$val".\"  )',$connection); ?>";}
</script>

我试图获取val的值并将其存储在数据库中,但不会插入。请告诉我这段代码出错了。

2 个答案:

答案 0 :(得分:0)

  

请告诉我这段代码出错了。

嗯,.php脚本由服务器执行,结果结果发送给用户。将其包含在<script> </script>中无济于事。因此,您的代码流程如下:

→Serverside,php:

<?php
  ...
?>
<script>
 function secondPassed() {
   document.getElementById('time').value = parseInt(document.getElementById('time').value) + 1;
   int val = 0;
   num = "<?php 
       $insert = mysql_query('INSERT INTO tbl_timer VALUES(\'\', \"."$val".\"  )',$connection);
       // error notice (probably suppresed), there is no $val variable defined...
       // If somethig _will_ be inserted, it will contain just (0) or ("")
?>";}
</script>

→客户端,html:

...
<script>
 function secondPassed() {
   document.getElementById('time').value = parseInt(document.getElementById('time').value) + 1;
   int val = 0;
   num = "0";}
</script>

当浏览器执行<script>时,它只会在#time中存储递增的值,而不是其他内容。

如果您想将javascripts中的内容传递给服务器,则必须向服务器发出请求,始终。这是合乎逻辑的。

所以,正如@adeneo建议的那样,你必须使用:

  1. ajax请求(aynchronous / synchronous)。
  2. Cookie(同步,页面重新加载将需要将Cookie传递给服务器)
  3. 套接字(异步/同步,并且有很多与套接字相关的解决方案)
  4. iframe s(异步,可能会导致不必要的副作用)。
  5. 根本不使用服务器端数据库(如果适用)。只需使用浏览器的localStorage或类似内容。

答案 1 :(得分:0)

我实际上已经多次这样做了很多次。将变量从javascript传递到php并不是什么大问题。但是,如果没有你想要做的具体细节,很难回答你。这里的问题是,你是否试图通过实时传递的秒数?您是在尝试输入浏览器已经获取的数据(通过windows.onload)还是通过用户交互?是与服务器的交互活动时经过的秒数?如果是这样,您将需要首先通过json缓存数据。否则php会用不同的时间呈现。你可以用XML做到这一点,但如果这是关键任务,速度会有所不同,你会因为php与服务器的通信方式而获得非常不同的数据。 json将是一个更好的选择。您可以使用Angularjs(不是我的个人推荐),或者如果它是您网站上的一个小应用程序,ReactJS非常方便,但您需要阅读它。这里没有足够的空间来解释。否则首先使用.data()缓存数据,这是jquery和技术上的AJAX。坦率地说,idk为什么你不想使用AJAX,它是解决这个问题的完美工具。 .data()是我一直用于原型设计和生成这类问题的东西。它就像一个魅力。

BOTTOM LINE:没有办法在没有先将数据缓存到json或xml的情况下这样做,以便php可以在以后检索它。 PHP不会实时做到这一点。它不是为它而建的。您将需要一个类来检索数据,无论是通过POST方法还是一个类从json转换为php对象,然后您可以使用任何方法传递给MYSQL。