我的总体目标是在页面上获取所有部分下拉菜单并将其发送给php文件进行处理。
现在,我在jQuery中执行此操作的方式是创建一个整体调度数组,然后将要更新的每个元素添加到该数组中。所以我有类似的东西:
var schedule = [];
var data = {
'user_id' : '12',
'day_of_week' : 'Monday',
'when' : 'start',
'time' : '12 AM'
}
schedule.push(data);
var data = {
'user_id' : '13',
'day_of_week' : 'Tuesday',
'when' : 'end',
'time' : '12 AM'
}
schedule.push(data);
// schedule would have two objects in it
显然是循环和东西。
因此,我的schedule数组中有两个对象,在这种情况下。
现在,是否可以将该计划数组用作ajax数据?如果我执行以下操作,它将无效:
$.ajax({
url: 'http://something.com/ajax',
data: schedule,
type: 'POST'
});
但是,如果我将其更改为schedule[0]
,它可以正常工作,但显然只适用于计划数组中的第一件事。
答案 0 :(得分:11)
data
属性应该是一个对象。
你可以做的是:
$.ajax({
url: 'http://something.com/ajax',
data: {schedule: schedule},
type: 'POST'
});
因此,如果您在PHP中收到此信息,那么您有$_POST["schedule"]
。这与JavaScript中的完全相同。
哦,是的,我已经忘记了......也看看.serialize()
和.serializeArray()
!
答案 1 :(得分:3)
确保使用正确版本的jQuery。在早期版本中,你必须通过一个刺痛;新版本在data
变量上使用“智能猜测”。你可以明确地告诉jQuery你传递了一个带有dataType
参数的javascript对象,或者你可以让jQuery弄清楚它。
<强>文档强>
jQuery.ajax()
- http://api.jquery.com/jQuery.ajax/
答案 2 :(得分:2)
将其传递为JSON:
$.ajax({
url: 'http://something.com/ajax',
data: {schedule: schedule},
type: 'POST',
dataType: 'JSON'
});
它会将一个JSON编码的字符串发送到服务器,服务器端语言可以解析。 (在PHP中,它是使用json_decode()
)完成的。