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 试图遍历 每个 对象的属性,甚至是那些根本没有任何可枚举属性的对象。这给包装原语带来了问题,例如 String
和 Date
.
解决方法:升级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()
},
我无法通过 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 试图遍历 每个 对象的属性,甚至是那些根本没有任何可枚举属性的对象。这给包装原语带来了问题,例如 String
和 Date
.
解决方法:升级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()
},