来自Ajax调用的返回变量是JS日期对象的无效类型

时间:2012-06-08 19:11:34

标签: php jquery ajax

我正在尝试使用Ajax调用获取服务器日期和时间。我能够检索我需要的值,但是当我尝试使用它创建一个javascript日期对象时,我得到一个无效的日期错误。我试图使用trim去除任何空格。有什么想法吗?

Ajax电话:

// ajax call to getcurrent server time
$.ajax({
   type: GET',
   url: 'datetime.php',
   success: function(data) {
         console.log("Data: " + data);
         currentdate = new Date($.trim(data));
         console.log("Current date from server: " + currentdate);
  },
});

PHP代码:

<?php
    echo date('y,m,d,H,i,s');
?>

控制台输出(Chrome):

Data: 12,06,08,15,07,57 
Current date from server: Invalid Date

1 个答案:

答案 0 :(得分:2)

您正在尝试使用字符串,就像它是文字代码一样。有点像使用eval,但实际上没有包含eval

是的,eval是一种方法:currentdate = eval("return new Date("+$.trim(data)+");");

然而eval是邪恶的。相反,你应该这样做:

var elems = $.trim(data).explode(",");
elems[1]--; // remember months are zero-based in JS
currentdate = new Date(elems[0],elems[1],elems[2],elems[3],elems[4],elems[5]);

但更好的是,你的PHP脚本应该是echo time();,那么你的JS可能是:

currentdate = new Date();
currentdate.setTime(data);