我正在尝试通过JSON将HTML select元素中所有选项标记的id和text值发送到AJAX。
我有一个名为“myObject”的对象服务器端,它有2个属性:objId和objName。我需要在发送之前将数据包装在此对象中。
我尝试了两种不同的数据形成方式,但它们都失败了。
我想我可能会错误地形成阵列。
以下是两种方式:
这个抛出“没有足够的参数”错误
var data = {
myObect: $("#mySelectBox option").each(function (i) {
return { objId: i.id, objName: i.text() }
})
};
这个从服务器抛出一个空的异常错误...我想这意味着我发送一个空对象?
var data = {
myObect: $.map($("#mySelectBox option"), function (i) {
return { objId: i.id, objName: i.text() }
})
};
有任何帮助吗?谢谢!
答案 0 :(得分:2)
试试这个:
var data = {
myObect: $("#mySelectBox option").map(function () {
return {
objId: this.id,
objName: $(this).text()
}
})
};
答案 1 :(得分:1)
首先,确保您的数据密钥,如果您从代码中复制了示例...它已写入myObect
:)
然后,jQuery循环助手(map
和each
)对原始DOM元素而不是jQuery元素起作用,因此i.text()
可能不起作用。包裹它:$(i).text()
。
最后一点,是的,使用map
,因为它返回一个回调返回数组。 each
不会修改jQuery集合。