1

我正在尝试通过 Ajax 提交整个多选(即 $('#tags_selected'))

$.ajax({
  url: base_url + 'companies/editTagsAsync',
  type: 'post',
  dataType: 'json',
  data: $('#tags_selected').val(),
  success: function (json) {
    console.log(json);
  }
});

但它只发送选择的值。我想传递选择框中的所有值。可能有一个简单的解决方案,但我只是不知道......

4

3 回答 3

4

您可以将所有选择值推入一个数组并通过以下方式发送data

var selectArr = []; 

$('#tags_selected option').each(function() {
    selectArr.push($(this).val());
});

$.ajax({
  url: base_url + 'companies/editTagsAsync',
  type: 'post',
  dataType: 'json',
  data: selectArr,
  success: function (json) {
    console.log(json);
  }
});
于 2013-04-11T09:10:52.580 回答
0

您需要找到<option>下拉列表的后代并获取它们的值:

data: { 
  values: $('#tags_selected').find("option").map(function() {return this.value;})
}

这样,在服务器端,您将获得一个名为“values”的数组,其中包含所有值。我已经使用.find()而不是在预期包含元素.children()的下拉列表中获取选项。<optgroup>

于 2013-04-11T09:09:10.143 回答
0
You need to send both selected and all values array.

var data: { 
        allValues: $('#tags_selected').find("option").map(function() {return this.value;}),
        selectedValues :$('#tags_selected').val()
    }
var data={ }
$.ajax({
  url: base_url + 'companies/editTagsAsync',
  type: 'post',
  dataType: 'json',
  data: data,
  success: function (json) {
    console.log(json);
  }
});
于 2013-04-11T09:24:25.647 回答