jquery ajax表单集合和其他键/值对

时间:2011-09-13 14:38:46

标签: asp.net-mvc jquery formcollection

因为我从来没有在这里得到答案:checkboxes and radio buttons in MVC FormCollection

我想我会采取不同的方法,只是找到我的单选按钮值客户端,并在我的ajax调用中将其作为一个不同的名称/值对传递...这是一个好主意,但我不能让它发挥作用。

使用它可以正常传递我的表单集合:

formCollection = $(':input');
        $.ajax({
            type: "POST",
            url: "/mycontroller/mymethod",
            data: formCollection,
            dataType: "text",
            success: showConfirm,
            error: function (xhr, textStatus, errorThrown) {
                alert(xhr.responseText);
            }
        });

但是当我尝试将数据更改为这样的对象时:

formCollection = $(':input');
        $.ajax({
            type: "POST",
            url: "/mycontroller/mymethod",
            data: ({collection: formCollection}),
            dataType: "text",
            success: showConfirm,
            error: function (xhr, textStatus, errorThrown) {
                alert(xhr.responseText);
            }
        });
它不会飞。我需要这样做,所以最终我可以使用它:

formCollection = $(':input');
        $.ajax({
            type: "POST",
            url: "/mycontroller/mymethod",
            data: ({collection: formCollection, radiobutton: radiobuttonValue}),
            dataType: "text",
            success: showConfirm,
            error: function (xhr, textStatus, errorThrown) {
                alert(xhr.responseText);
            }
        });

我在控制器上的动作方法如下所示:

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult mymethod(FormCollection collection)
        {
}

任何想法,为什么当我更改数据时,它不起作用?

2 个答案:

答案 0 :(得分:1)

请尝试使用formCollection = $('form').serialize()

http://api.jquery.com/serialize

这将产生一个看起来像GET查询字符串的字符串,您可以直接在第一个代码示例中使用它。

答案 1 :(得分:0)

//首先尝试获取字段的值,以解决问题 formCollection = $(':input')。val();