如何使用JQuery将这些相关下拉列表的键值对作为JSON字符串传递? (例如:{“32”:“3”,“4”:“1”})
<select name="32" rel="select_items">
...
...
</select>
<select name="4" rel="select_items">
...
...
</select>
我知道使用JQuery的serializeArray()的可能性,但我不确定如何仅在相关的表单项上使用此函数,而不是整个表单。
感谢您的支持。
答案 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();
答案 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表单中还有其他表单字段,您只需要这两个字段。