我无法通过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标签中看到日期:
如果我像这样更改日期行:
var evs = "October 13, 2014 11:13:00";
它照常运作。
答案 0 :(得分:3)
jQuery 1.7.1(可能之前)中存在一个错误地处理某些对象的错误。这已在1.7.2中修复:
#10466:jQuery.param()错误包裹了深层对象的基元
jQuery试图遍历每个对象的属性,即使那些根本没有任何可枚举属性的对象也是如此。这对包裹的基元构成了问题,例如String
和Date
。
解决方案:升级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>