1

我正在使用fullcalendar在我的 struts2 应用程序中构建日历。但是...我遇到了一些问题。我们构建了一个高级搜索,允许我们过滤日历事件服务器端并返回结果列表。除了带有多个的选择之外,我能够让大多数东西正常工作,我认为这是因为我使用的 jquery 错误。

ajaxLocationCalendar.action希望看到一个位置列表,而不是一个包含多个位置的字符串。

在我的代码中,我有一个<select id="locationsSelect" multiple="multiple">有几个选项。

我的全日历设置如下所示:

events: {
  url: 'ajaxLocationCalendar.action',
  data: {
    'scheduleableCriteria.approvalStatus': function() {
      return $('#approvalStatusSelect').val();
    },
    'scheduleableCriteria.locations': function() {
      return $('#locationsSelect').val();
    }
  }
}

效果很好,#approvalStatusSelect因为有 4 个有效选项,而且是单选。但是我在使用#locationSelect.

如果我什么都不选择,我最终会发送"null"与任何东西都不匹配的东西。如果我只选择一个选项,我会得到一个有效的结果,因为它被正确包装了。如果我尝试发送两个选定的内容,我最终会发送类似"Apartment,Building+3".

是否有除此之外的功能.val()可以让我发送列表而不是我现在得到的?

任何帮助表示赞赏,如果您需要澄清,请将其放在评论中,我会尝试澄清更多。

4

2 回答 2

0
'scheduleableCriteria.locations': function() {
      return $('#locationsSelect').val();
    }

这只会返回一个字符串 - 将多个值显示为逗号分隔的列表。所以在行动中,他们实际上最终成为一个单弦。

将所有要提交的字段放在一个表单标签中,然后使用如下序列化

var submit_data = $('form').serialize();

然后,您的代码将更改为:

events: {
  url: 'ajaxLocationCalendar.action',
  data: submit_data        
}

这样,多选将作为数组而不是字符串提交。

解决方案 2:

要创建自定义函数,解析选择并返回所有选定值的数组

完整的解决方案在这里

于 2013-10-27T20:23:27.023 回答
0

以下内容最终使用以下内容,因为 .serialize() 和 .seralizeArray() 无法正常工作。

data: function() {
  var data = {};
  data['scheduleableCriteria.approvalStatus'] = $("#approvalStatusSelect").val();
  var locations = $("#locationsSelect").val();
  if (locations) {
    $.each(locations, function(i, location) {
      data['scheduleableCriteria.locations[' + i + ']'] = location;
    });
  }
  return data;
}
于 2013-11-12T17:00:52.980 回答