jQuery ajax:无法发送日期?

时间:2015-01-13 17:56:36

标签: jquery ajax

我无法通过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);
        }   
});

我熟悉jQuery ajax。通常我有任何问题通过它发送变量。但我在那里放养..

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

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

我收到此消息:

Notice: Undefined index: evs in ajax_save_scheduler()

有人可以解释原因吗?

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

在firebug中,我无法在查询的post标签中看到日期:

enter image description here

如果我像这样更改日期行:

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

它照常运作。

3 个答案:

答案 0 :(得分:3)

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

  

#10466:jQuery.param()错误包裹了深层对象的基元

jQuery试图遍历每个对象的属性,即使那些根本没有任何可枚举属性的对象也是如此。这对包裹的基元构成了问题,例如StringDate

解决方案:升级jQuery。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您应该避免发送此类平台特定对象。仅使用基元。改变行

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

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

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