Php 无法通过JavaScript发送数据库时间戳,但可以发送其他值

Php 无法通过JavaScript发送数据库时间戳,但可以发送其他值,php,javascript,mysql,string,timestamp,Php,Javascript,Mysql,String,Timestamp,我正在使用PHP5、MySQL、JavaScript和Fusion图表 我从数据库返回了以下时间值:2011-12-19 12:00:00 在从数据库中获取它之后,我尝试通过JavaScript strURL将它传递到另一个页面,在那里我可以使用这个值进行进一步的数据库调用。我遇到的问题是,每当我通过日期/时间发送JavaScript时,它都会失败。我可以发送任何其他值类型,它可以工作,所以问题似乎是时间戳。我尝试在它被传递之前将其转换为字符串(只是为了确保它不是一个已经存在的字符串),但这不起

我正在使用PHP5、MySQL、JavaScript和Fusion图表

我从数据库返回了以下时间值:
2011-12-19 12:00:00

在从数据库中获取它之后,我尝试通过JavaScript strURL将它传递到另一个页面,在那里我可以使用这个值进行进一步的数据库调用。我遇到的问题是,每当我通过日期/时间发送JavaScript时,它都会失败。我可以发送任何其他值类型,它可以工作,所以问题似乎是时间戳。我尝试在它被传递之前将其转换为字符串(只是为了确保它不是一个已经存在的字符串),但这不起作用。我猜这与值中的字符有关。你知道怎么解决这个问题吗

PHP中的数据库调用,然后将字段发送到JavaScript中:

$strQuery = "SELECT unit, watts, time, device, siteid FROM inverter WHERE time = '2011-12-19 12:00:00' AND siteid = '842'";
$result2 = mysql_query($strQuery) or die(mysql_error());

if ($result2) {
    while($ors2 = mysql_fetch_array($result2)) {
        $thetime = (string)$ors2['time'];
        $strXML .= "<set color='58ACFA' label='" . $ors2['device'] . "/" . $ors2['unit'] . "' value='" . $ors2['watts'] . "' link='javaScript:updateChart(" . $ors2['unit'] . " , " . $ors2['device'] . " , " . $ors2['siteid'] . " , " . $thetime . ")'/>";
    }
}

您可以将日期转换为具有以下内容的时间戳

new Date('2011-12-19 12:00:00').getTime()
updateChart(341, 454, 842, 2011-12-19 12:00:00);
或者使用
encodeURIComponent('2011-12-19 12:00:00')对其进行编码。


后者可能是更好的解决方案,因为它适用于所有类型的值,而不仅仅是日期。如果您想在客户端读取参数,可以使用
decodeURIComponent
,这在服务器端应该已经可以正常工作了。

您可以将日期转换为具有以下内容的时间戳

new Date('2011-12-19 12:00:00').getTime()
link='javaScript:updateChart(" . $ors2['unit'] . " , " . $ors2['device'] . " , " . $ors2['siteid'] . " , " . $thetime . ")'
updateChart(341, 454, 842, 2011-12-19 12:00:00);
或者使用
encodeURIComponent('2011-12-19 12:00:00')对其进行编码。

后者可能是更好的解决方案,因为它适用于所有类型的值,而不仅仅是日期。如果您想在客户端读取参数,可以使用
decodeURIComponent
,这在服务器端应该已经可以正常工作了

link='javaScript:updateChart(" . $ors2['unit'] . " , " . $ors2['device'] . " , " . $ors2['siteid'] . " , " . $thetime . ")'
这个JavaScript变得像

new Date('2011-12-19 12:00:00').getTime()
updateChart(341, 454, 842, 2011-12-19 12:00:00);
前三个参数是有效数字(我假设ID是整数),但第四个参数会导致语法错误。您需要做的是将其用引号括起来,使其成为字符串:

link='javaScript:updateChart(... " , \"" . $thetime . "\")'
                                     ^^                ^^
现在JavaScript应该是这样的:

updateChart(341, 454, 842, "2011-12-19 12:00:00");
这个JavaScript变得像

new Date('2011-12-19 12:00:00').getTime()
updateChart(341, 454, 842, 2011-12-19 12:00:00);
前三个参数是有效数字(我假设ID是整数),但第四个参数会导致语法错误。您需要做的是将其用引号括起来,使其成为字符串:

link='javaScript:updateChart(... " , \"" . $thetime . "\")'
                                     ^^                ^^
现在JavaScript应该是这样的:

updateChart(341, 454, 842, "2011-12-19 12:00:00");

一些示例代码会很棒,如果通过url参数发送,您是否尝试过url编码值?也许我是盲人,但在您发布的Javascript函数中我没有看到任何日期/时间变量。。。我在对updateChart()的调用中看到4个参数,但该方法只接收3个参数,并且不引用任何datetime值。你能再检查一遍你的例子吗?是的,很抱歉,这就是为什么我没有首先发布我的代码的原因——因为它太乱了!我一直在把东西拿出来放进去,即使没有变量,图形也应该加载,因为目前我没有在javascript的另一端调用它。如果我将“$thetime.”变量更改为任何其他变量,那么它将允许javascript加载,只有当它是时间戳时才不会加载图形。一些示例代码会很好,如果您通过url参数发送它,您是否尝试过对值进行url编码?也许我是盲人,但我在您发布的javascript函数中没有看到任何日期/时间变量。。。我在对updateChart()的调用中看到4个参数,但该方法只接收3个参数,并且不引用任何datetime值。你能再检查一遍你的例子吗?是的,很抱歉,这就是为什么我没有首先发布我的代码的原因——因为它太乱了!我一直在把东西拿出来放进去,即使没有变量,图形也应该加载,因为目前我没有在javascript的另一端调用它。如果我将“$thetime.”变量更改为任何其他变量,那么它将允许javascript加载,只有当它是时间戳时才不会加载图形。是的,这是一个:D,尽管发现涉及到更多引号,所以两边都需要3个反斜杠…噩梦!!是的,这是一个:D虽然发现有更多的报价涉及,所以需要3反斜杠两边…噩梦!!