jQuery ajax: 无法发送日期?

jQuery ajax: Cannot send dates?

我无法通过 jQuery Ajax 发送任何日期对象,为什么?

var nid = '99';     
var date = new Date("October 13, 2014 11:13:00");

$.ajax({
        data: { 
            nid: nid, 
            evs: date, 
        },
        type: 'POST',
        url: '/ajax/save_scheduler',
        dataType: "json",
        error:function(xhr,err){        
                return false;
        },
        success: function(res) {
            // console.log(res);
        }   
});

我熟悉jQueryajax。通常我在通过它发送变量时遇到任何问题。但是我那里有存货..

在服务器端,我可以捕获 $_POST['nid'],但无法捕获 $_POST['evs']。

$nid = $_POST['nid'];
$evs = $_POST['evs'];

我收到这条消息:

Notice: Undefined index: evs in ajax_save_scheduler()

有人可以解释为什么吗?

/***** 编辑 ******/

在 firebug 中,我无法在查询的 post 选项卡中看到日期:

如果我这样更改日期行:

var evs = "October 13, 2014 11:13:00";

一切如常。

jQuery 1.7.1(可能之前)中存在错误处理某些对象的错误。这已在 1.7.2:

中修复

#10466: jQuery.param() mistakes wrapped primitives for deep objects

jQuery 试图遍历 每个 对象的属性,甚至是那些根本没有任何可枚举属性的对象。这给包装原语带来了问题,例如 StringDate.

解决方法:升级jQuery.

您应该避免发送此类特定于平台的对象。仅使用原语。换行

var date = new Date("October 13, 2014 11:13:00");

var date = (new Date("October 13, 2014 11:13:00")).toString();

这在这里似乎毫无意义,但这里的重点是使用 Javascript 中的某些规则将所有对象转换为字符串,并在服务器端解析它们以创建符合服务器平台的 Date 对象(如果可用)。

如果可以使用字符串类型,试试toString();

data: { 
    nid: nid, 
    evs: date.toString()
},