在JQuery中传递多个变量的最简单方法是什么?

时间:2010-08-20 17:50:02

标签: jquery asp.net-mvc json

我有一个使用JQuery Json帖子的表单。我在页面上有10个以上的文本框。我有变量通过我知道的唯一方式...是否有另一种传递多个变量的方法?

$('#nameSubmit').click(function() {
    var status = document.getElementById('Select2').value;
    var lob = document.getElementById('LOB').value;
    var lName = document.getElementById('LName').value;
    var fName = document.getElementById('FName').value;
    var city = document.getElementById('City').value;
    var state = document.getElementById('State').value;
    $.post("Home/LoadTable", { Status: status, LOB: lob, LName: lName, FName: fName, City: city, State: state }, function(data) {
        //...process code works 
    }, 'json');
});

修改

我使用以下方法添加文本框和下拉列表...

<%using (Html.BeginForm("Index", "Home", FormMethod.Post, new { id = "myForm" })) {%>
<td><%= Html.TextBox("LName")%></td>
<select name="Status" id="Select2"> 
    <option value="ALL">All Policies</option>             
    <option value="Active">Active</option>
    <option value="Cancelled">Cancelled</option>                                     
</select>
<% } %>

3 个答案:

答案 0 :(得分:3)

将文本框放在<form>标记内,然后使用jQuery的serialize方法。

<form id="myForm" action="javascript:void(0);">
    <input type="text" name="a" value="Input A" />
    <input type="text" name="b" value="Input B" />
    <input type="submit" value="Submit Form">
</form>

然后你可以这样做:

$('#myForm').submit(function(){
    $.post("Home/LoadTable", $('#myForm').serialize(), function(data){
        // code...
    },'json');
});

答案 1 :(得分:0)

这几乎就是这样做的。您可以编写一个表单序列化程序,为您生成json,但您仍然要将生成的json传递给它。

答案 2 :(得分:0)

以下代码将循环遍历所有文本框(但不包括textareas),并创建一个ID为关键字的对象。

$('#nameSubmit').click(function () {
    var obj = {};
    $("input:text", this.form).each(function () {
        obj[this.name] = this.value;
    });
    $.post("Home/LoadTable", obj, function (data) { /* */ }, 'json');
});

编辑:另一个人建议使用$().serialize(),在这个用例中我强烈支持这是最好的答案。