我正在寻找一种方法来了解如何访问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的值并将其存储在数据库中,但不会插入。请告诉我这段代码出错了。
答案 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建议的那样,你必须使用:
ajax
请求(aynchronous / synchronous)。iframe
s(异步,可能会导致不必要的副作用)。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。