0

我正在尝试通过 JSON 将 HTML 选择元素中所有选项标签的 id 和文本值发送到 AJAX。

我有一个名为“myObject”的对象服务器端,它有 2 个属性:objId 和 objName。而且我需要在发送之前将我的数据包装在这个对象中。

我尝试了 2 种不同的数据形成方式,但都失败了。

我想我可能错误地形成了数组。

这里有两种方法:

这个抛出一个“没有足够的参数”错误

    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() }
        })
    };

有什么帮助吗?谢谢!

4

2 回答 2

2

尝试这个:

var data = {
    myObect: $("#mySelectBox option").map(function () {
        return {
            objId: this.id,
            objName: $(this).text()
        }
    })
};
于 2013-05-17T16:00:43.223 回答
1

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

然后,jQuery 循环助手(mapeach)对原始 DOM 元素起作用,而不是 jQuery 元素,所以你i.text()可能无法工作。把它包起来:$(i).text()

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

于 2013-05-17T16:00:10.967 回答