将一组对象作为ajax发布数据发送?

时间:2012-04-21 16:48:25

标签: javascript jquery ajax

我的总体目标是在页面上获取所有部分下拉菜单并将其发送给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],它可以正常工作,但显然只适用于计划数组中的第一件事。

3 个答案:

答案 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())完成的。