jQuery$.ajax发布多个选择

jQuery$.ajax发布多个选择,jquery,ajax,multiple-select,Jquery,Ajax,Multiple Select,我有一个multipe select作为输入表单的一部分,我想通过jQueryAjax提交它的选定值 我尝试使用以下语法 $('#multipleselect').val().join('|'); 这是可行的,但我遇到的问题是,用户不需要从多重选择中选择任何内容。如果他们没有,我会得到一个错误,因为你不能加入一个空对象 有什么建议吗 还要记住,还有其他提交的值。例如: data: "name=" + $("#name").val() + "&multipleselect=" + $("

我有一个multipe select作为输入表单的一部分,我想通过jQueryAjax提交它的选定值

我尝试使用以下语法

$('#multipleselect').val().join('|');
这是可行的,但我遇到的问题是,用户不需要从多重选择中选择任何内容。如果他们没有,我会得到一个错误,因为你不能加入一个空对象

有什么建议吗

还要记住,还有其他提交的值。例如:

data: "name=" + $("#name").val() + "&multipleselect=" + $("#multipleselect").val().join('|');
您可以使用以下方法:

将一组表单元素编码为字符串以供提交

您可以使用以下方法:

将一组表单元素编码为字符串以供提交


在加入它之前,只需检查它是否为null。我可以在数据字符串中这样做吗?或者我必须将其分配给一个var吗?在加入它之前,只需检查它是否为null。我可以在数据字符串中这样做吗?或者我必须将其分配给var吗?这是我面临的另一个问题。我正在将表单加载到jQuery UI对话框中,在使用警报进行测试时,我似乎无法获取序列化表单。@MikeGorge注意表单元素必须具有名称属性。哦,我认为表单本身只需要一个名称。我去试试这个,如果行得通,我会记下你的答案。谢谢不,如果您使用的是jQuery DataTables之类的东西,那么您需要构建一个“对象”,而不是一个“字符串”。它给你一个数据对象,你可以给它添加值,就是这样。并且不能向该对象添加具有相同名称的多个键,因为普通对象不支持该操作。由于serializeArray基本上是用同一个键手动构造具有多个值的绝对最终数据字符串,因此您无法利用任何其他类型的处理,例如复杂的处理DataTables包含“column[i][prop]形式的键=值'.@Triynko无法通过http协议直接发送对象。你应该传一串。现在大部分使用JSON。JSON是数据类型的字符串表示,Datatables在后台使用jQueryAjax方法,还将字符串作为请求主体发送到服务器。如果将对象传递给jqueryajax方法,这些方法会在发送请求之前将传递的数据转换为JSON。插件使用数据的方式是另一个话题。这是我面临的另一个问题。我正在将表单加载到jQuery UI对话框中,在使用警报进行测试时,我似乎无法获取序列化表单。@MikeGorge注意表单元素必须具有名称属性。哦,我认为表单本身只需要一个名称。我去试试这个,如果行得通,我会记下你的答案。谢谢不,如果您使用的是jQuery DataTables之类的东西,那么您需要构建一个“对象”,而不是一个“字符串”。它给你一个数据对象,你可以给它添加值,就是这样。并且不能向该对象添加具有相同名称的多个键,因为普通对象不支持该操作。由于serializeArray基本上是用同一个键手动构造具有多个值的绝对最终数据字符串,因此您无法利用任何其他类型的处理,例如复杂的处理DataTables包含“column[i][prop]形式的键=值'.@Triynko无法通过http协议直接发送对象。你应该传一串。现在大部分使用JSON。JSON是数据类型的字符串表示,Datatables在后台使用jQueryAjax方法,还将字符串作为请求主体发送到服务器。如果将对象传递给jqueryajax方法,这些方法会在发送请求之前将传递的数据转换为JSON。插件使用数据的方式是另一个主题。
var data = $('form').serialize()