繁体   English   中英

Ajax提交到asp.net mvc发布操作或将集合转换为json?

[英]Ajax Submit to asp.net mvc post action or turn collection into json?

我需要获取已检查Finalize的每个表行的行ID,并将该字符串/ json发送到ASP.net MVC控制器。 Ajax给我带来了问题。 我设法获取了需要提交的数据; 但我不确定最好的处理方法是什么。 我需要先创建一个json对象,然后发布该对象,还是有一种简单的方法可以发布我拥有的对象? 我尝试了json路由,并没有走很远,所以我又回到了这一点,这至少是在获取正确的数据。

  finalize = function() { var tableData = ""; $('#results').find('tr').each(function() { var row = $(this); if (row.find('input[type="checkbox"]').is(':checked')) { tableData = tableData + $(this).find('td:first').text() + '\\n'; // get ID } }); //var myRows = JSON.parse(tableData); //$.post("/Journal/SaveEntry", { Row: myRows }); alert(tableData); }; 
 <script src="https://github.com/maxazan/jquery-treegrid/blob/master/js/jquery.treegrid.js"></script> <script src="https://github.com/maxazan/jquery-treegrid/blob/master/js/jquery.treegrid.bootstrap3.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"> <table class="table tree truncate_table"> <tbody> <tr class=" info"> <th>Row ID</th> <th>...</th> <th>Finalize</th> </tr> <tr class="treegrid-1"> <td> <span class="treegrid-expander"></span> R4915 </td> <td>...</td> <td> <input type="checkbox" name="Finalize" value="Finalize"> </td> </tr> <tr class="treegrid-2"> <td> <span class="treegrid-expander"></span> <a target="_blank" href="http://example.com" class="vt-p"> R4942 </a> </td> <td>...</td> <td> <input type="checkbox" name="Finalize" value="Finalize"> </td> </tr> </tbody> </table> <button onclick="finalize()" type="button" class="btn btn-danger pull-right">Finalize</button> 

您想要的很可能是jquery序列化并发布您的表单。 请看以下博客文章, 使用jQuery提交ASP .NET MVC表单

我在这里假设返回ID的集合比在控制器上拆分字符串要有用。

HTML

<button type="button" id="finalize" class="btn btn-danger pull-right">Finalize</button>

脚本

$('#finalize').click(function() {
  var idArray = new Array();
  $('#results').find('tr').each(function() {
    var row = $(this);
    if (row.find('input[type="checkbox"]').is(':checked')) {
      idArray.push(row.find('td:first').text());
    }
  });
  $.ajax({
    url: '@Url.Action("SaveEntry", "Journal")';
    type: 'post'
    traditional: true,
    data: { values: idArray }
  }) 
});

控制者

public ActionResult SaveEntry(string[] values) // or int[] values if the ID is typeof int
{
}

请更改您的完成函数:

    finalize = function() 
    {
          var tableData = "";
          $('#results').find('tr').each(function() {
            var row = $(this);
            if (row.find('input[type="checkbox"]:checked')) 
            {
              tableData = tableData + row.find('td:first > a').text() + '\n'; 
            }
          });

          //$.post("/Journal/SaveEntry", tableData); // parse json at your controller

          alert(tableData);
        };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM