Javascript 在ASP.NET MVC中使用jQuery发布表单元素不起作用
我正在使用Javascript 在ASP.NET MVC中使用jQuery发布表单元素不起作用,javascript,jquery,asp.net,html,asp.net-mvc,Javascript,Jquery,Asp.net,Html,Asp.net Mvc,我正在使用ASP.netmvc和jQuery 我有一个文本框和一个HTML表格,其中包含数据,例如: <form action="/Server/Test" method="post"> <input type="text" id="ServiceAccount" /> <table> <tr> <th>Heading 1</th>
ASP.netmvc
和jQuery
我有一个文本框和一个HTML表格,其中包含数据,例如:
<form action="/Server/Test" method="post">
<input type="text" id="ServiceAccount" />
<table>
<tr>
<th>Heading 1</th>
<th>Heading 2</th>
</tr>
<tr>
<td>Cell data 1</td>
<td>Cell data 2</td>
</tr>
</table>
</form>
鉴于我下面的代码,它不会影响我的操作方法:
$('form').submit(function () {
$.post('@Url.Action("Test", "Server")', $('form').serialize(), function (data) {
alert('success');
});
return false;
});
我不明白我做错了什么。
我需要将文本框的值和单元格数据发布到控制器的操作方法。因此,如果我在文本框中键入1234567,那么我需要将该值与表的内容一起发布到action方法。我还需要表格数据进行处理。这可能吗?我找不到样品。
是的,这是可能的,但是您的表必须包含隐藏的输入,tr
和td
数据不能随提交一起发送(正常提交,不是ajax),而且serialize()
不序列化表行。看看这个问题:
基本上,当您提交表单时,只提交表单元素,如INPUT、Hidden、TextAra,而不是div、table、span等 因此,如果要提交,请为表数据使用隐藏字段 或者更好的方法是循环表数据,准备JSON并将其作为参数发布
$('form').submit(function () {
var myPostData=//construct this from table and convert as JSON
$.post('@Url.Action("Test", "Server")', {data:myPostData}, function (resp) {
alert('success');
});
return false;
});
在控制器操作方法中设置
WebMethod
为了
您的路由配置是什么样子的?它只有启动MVC项目时的默认配置。可能是javascript错误,也可能是路由问题。如果在浏览器中打开调试控制台,是否看到任何JS错误?如果打开“网络”选项卡,是否会得到404?您还需要在输入字段中设置名称属性,并将操作方法的参数名称设置为相同的名称。将类型从字符串数组更改为字符串。无法向表中添加名称属性。谢谢。我看了一下代码,它提到了输入类型。这与表有什么关系?你有一些示例工作代码给我吗?@BrendanVogt正如你所写的,你想提交表内容,只需使用jquery在
td
标记中添加具有相同数据的隐藏输入。其主要思想是创建正确的名称,这些名称将绑定到服务器端。如何做到这一点,你们可以从我的链接在文章中看到。
$('form').submit(function () {
var myPostData=//construct this from table and convert as JSON
$.post('@Url.Action("Test", "Server")', {data:myPostData}, function (resp) {
alert('success');
});
return false;
});
[WebMethod]
[HttpPost]
public ActionResult Test(string[] data)
{
// Use the value Cell data 1
// Use the value Cell data 2
return View();
}