Select 字段序列化无法通过 ajax 工作

Select field serialize not working via ajax

我有 3 个 select 菜单。我需要通过 ajax 将值作为数组发送,我正在尝试使用 serialize() 来完成。问题是它只发送 1 个值而不是所有 3 个值。知道发生了什么事吗?

var menu = $('select[name^="menu"]').serialize();
console.log(menu);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<select name="menu[]">
  <option value="test">test</option>
</select>
<select name="menu[]">
  <option value="test1">test1</option>
</select>
<select name="menu[]">
  <option value="test2">test2</option>
</select>

var menu = $('select[name^="menu"]').serialize();
$.ajax({
    type:"POST",
    url:"www.example.com/submit.php",
    dataType: 'html',
    data: 'menudata='+menu+'&name=bob',
    success: function(data) {
         alert(data);
    },error: function() {
       alert('error occurred')
    }
})

问题在于您如何在 AJAX 请求中将查询字符串发送到服务器,而不在于 serialize() 如何格式化输出。

要解决此问题,请从您手动创建的查询字符串中删除 menudata= 属性 名称:

data: menu + '&name=bob',