循环遍历HTML select元素并通过JSON将内容发送到AJAX

时间:2013-05-17 15:53:50

标签: jquery

我正在尝试通过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() }
        })
    };

有任何帮助吗?谢谢!

2 个答案:

答案 0 :(得分:2)

试试这个:

var data = {
    myObect: $("#mySelectBox option").map(function () {
        return {
            objId: this.id,
            objName: $(this).text()
        }
    })
};

答案 1 :(得分:1)

首先,确保您的数据密钥,如果您从代码中复制了示例...它已写入myObect:)

然后,jQuery循环助手(mapeach)对原始DOM元素而不是jQuery元素起作用,因此i.text()可能不起作用。包裹它:$(i).text()

最后一点,是的,使用map,因为它返回一个回调返回数组。 each不会修改jQuery集合。