11

我的总体目标是获取页面上的所有下拉列表并将其发送给 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

显然在循环等等。

因此,在这种情况下,我的计划数组中有两个对象。

现在,是否可以将该调度数组用作 ajax 数据?如果我这样做是行不通的:

$.ajax({
  url: 'http://something.com/ajax',
  data: schedule,
  type: 'POST'
});

但是,如果我改为将其更改为schedule[0]它可以正常工作,但显然仅适用于调度数组中的第一件事。

4

3 回答 3

11

data属性应该是一个对象。

你可以做的是:

$.ajax({
  url: 'http://something.com/ajax',
  data: {schedule: schedule},
  type: 'POST'
});

因此,如果您在 PHP 中收到此信息,您将拥有$_POST["schedule"]. 与您在 JavaScript 中的完全相同。

哦,是的,我忘记了......也看看.serialize().serializeArray()

于 2012-04-21T19:27:50.733 回答
3

确保您使用的是正确版本的 jQuery。在早期版本中,您必须通过刺痛;data新版本对变量使用“智能猜测” 。你可以明确地告诉 jQuery 你正在向它传递一个带有dataType参数的 javascript 对象,或者你可以让 jQuery 来解决它。

文档

jQuery.ajax()- http://api.jquery.com/jQuery.ajax/

于 2012-04-21T19:59:07.450 回答
2

将其作为 JSON 传递:

$.ajax({
  url: 'http://something.com/ajax',
  data: {schedule: schedule},
  type: 'POST',
  dataType: 'JSON'
});

它会将 JSON 编码的字符串发送到服务器,服务器端语言可以解析该字符串。(在 PHP 中,它是用 完成的json_decode())。

于 2012-04-21T17:04:50.290 回答