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

时间:2017-09-18 18:28:09

标签: jquery

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

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

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

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

感谢您的支持。

3 个答案:

答案 0 :(得分:1)

假设我正确地理解了你的问题:你希望你的所有选项都被序列化为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

答案 1 :(得分:0)

 var dtOptionsData = (DataSet)ViewState["dtOption"];
        for (var i = 0; i < RptOptions.Items.Count; i++)
        {
            var tbOptionOrder = (RptOptions.Items[i].FindControl("OptionOrder") as TextBox);
            dtOptionsData.Tables[0].Rows[i]["Option Order"] = tbOptionOrder.Text;

            if (tbOptionOrder.Text == "")
            {
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
                    "alertMessage",
                    "alert('Please Enter Option Order');", true);
                return;
            }
            if (tbOptionOrder.Text == "0")
            {
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
                    "alertMessage",
                    "alert('Please Enter Option Order');", true);
                return;
            }
        }

        if (stemTextBox.Text == "")
        {
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
                "alertMessage",
                "alert('Please Enter a Stem');", true);
            return;
        }

        try

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

答案 2 :(得分:-1)

你可以这样做输出{&#34; 32&#34;:&#34; 3&#34;,&#34; 4&#34;:&#34; 1&#34;}

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

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