我有一个使用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>
<% } %>
答案 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()
,在这个用例中我强烈支持这是最好的答案。