Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ASP.NET MVC中使用jQuery发布表单元素不起作用_Javascript_Jquery_Asp.net_Html_Asp.net Mvc - Fatal编程技术网

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