所以我在我的页面上有这个javascript函数来计算日期。现在,我想访问php变量中函数抛出的结果,以便我可以使用该变量在数据库中插入值。 应在页面加载时调用该函数。 我一直试图在过去的4个小时内完成这项任务,但最终没有任何解决方案,欢迎任何建议和解决方案。
我的JS代码: -
<script language="JavaScript">
// function to calculate local time
// in a different city
// given the city's UTC offset
function calcTime(city, offset,selDate,selHours,selMinutes) {
//alert(selDate);
//alert(selHours);
//alert(selMinutes);
//alert(offset);
var str = selDate;
var res = str.split("/");
//07,26/2014
//0,1,2
var d = new Date(res[2], res[0], res[1], selHours, selMinutes, 0, 0);
// create Date object for current location
//alert(d);
// var d = new Date();
//alert(d);
// convert to msec
// add local time zone offset
// get UTC time in msec
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// create new Date object for different city
// using supplied offset
nd = new Date(utc + (3600000*offset));
// return time as a string
return nd.toLocaleString();
}
function testTime(){
var selDate = document.getElementById("datepicker").value;
var selHours = document.getElementById("hours").value;
var selMinutes = document.getElementById("minutes").value;
var selTimeZone = document.getElementById("timezone").value;
alert(selDate);
alert(selHours);
alert(selMinutes);
alert(selTimeZone);
}
</script>
答案 0 :(得分:1)
由于JS是客户端而PHP是服务器端,因此Javascript和PHP没有任何交互。
PHP将在JS之前执行。
所以,你可以做的是使用一个隐藏的字段:
<input type="hidden" name="hid" id="date">
和javascript变量的值:
document.getElementById('date').value=date; //whatever value you want to store
然后只需像使用文本框一样获取此字段的值。
或者只是使用AJAX将数据从客户端发送到服务器,正如其他人已经说过的那样:
$.ajax({
url: something.php // current page
type: 'POST',
data: {
var1: 'date' // of if writing a JS variable remove the quotes.
},
success: function() {
// whatever
}
});
在页面加载时调用函数写:<body onload="foo()">
答案 1 :(得分:1)
要允许JavaScript与PHP后端通信,您必须使用Ajax
。这允许您将信息发送到PHP文件。
为了保持简单,我建议您使用jQuery,它有两个有用的方法,您可以使用$.ajax
和$.get
您的JavaScript可能如下所示:
$(document).ready(function(){
var timeToSend = calcTime(city, offset,selDate,selHours,selMinutes);
//we are sending information to saveTimeToDB.php
$.ajax('saveTimeToDB.php', {
data: {time:timeToSend}//this is an object containing all the information you want to send
}).done(function(){
//a function which gets called if the ajax call succeeded
alert('the time has been saved');
}).fail(function(){
//a function which gets called if the ajax call failed
alert('Uh-oh, something went wrong. We did not save the time');
});
});
在&#39; saveTimeToDB.php&#39;您现在可以使用以下文件访问此变量:
$time = $_GET['time'];
然后,您应该能够使用此变量并将其插入数据库中。
确保对此变量进行多次检查,以确保您不会向您的数据库注入任何恶意内容。
答案 2 :(得分:0)
我不确定JS,但是如果函数是正确的,那么尝试在上面发布的代码</script>
之前写这个,然后打开文件(来自浏览器):
alert calcTime('city', 3,2,12,30);
如果你想要的是什么,那么:
$.get( "ajax/dowork.php?calculatedTime=" + calcTime('city', 3,2,12,30) );
...将调用dowork.php(您将DB插入代码放入其中,并且您将$_GET['calculatedTime']
插入)。