将多个相关表单字段的键值对作为JSON字符串



如何使用jQuery作为JSON字符串的这些相关下拉列表的键值对?(例如:{" 32":" 3"," 4":" 1"})

<select name="32" rel="select_items">
...
...
</select>
<select name="4" rel="select_items">
...
...
</select>

我知道使用jQuery的Serializearray()的可能性,但是我不确定如何仅在相关表单项目而不是整个表单上使用此函数。

感谢您的支持。

假设我正确理解您的问题:您希望将所有选项序列化为JSON,我会像这样做

html

<select name="32" rel="select_items">
  <option value=one>1</option>
  <option value=two>2</option>
</select>
<select name="4" rel="select_items">
  <option value=three>3</option>
  <option value=four>4</option>
</select>

jQuery

var output = {};
$("select option").each(function(){
     var value = $(this).val();
     output[value] = $(this).html();
});
document.write(JSON.stringify(output));

如果您只想要选定的方法,则可以使用:

var output = {};
$("select option:selected").each(function(){
      var value = $(this).val();
      output[value] = $(this).html();
});

或者您可以像您描述的那样,只需使用Serializearray();

jsfiddle

arr = Array();
$('select option:selected').each(function(){
     arr[$(this).parent().attr('name')] = $(this).val();
});

它将返回一个数组:[" 32":" 3"," 4":" 1"]

您可以这样做,以输出{" 32":" 3"," 4":" 1"}

$x = $_POST['32'];
$y = $_POST['4'];
$z = array_merge($x, $y);
$output = json_encode($z);

这假设表单上还有其他表单字段,而您只需要这两个字段。

最新更新