从php变量中的javascript函数获取值

时间:2014-07-27 16:28:47

标签: javascript php jquery

所以我在我的页面上有这个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>

3 个答案:

答案 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']插入)。