如何将使用`getElementsByClassName`创建的集合发送到我的控制器?

时间:2015-08-18 16:50:04

标签: javascript jquery asp.net-mvc vb.net

我正在努力尝试将getElementsByClassName生成的集合发送到VB.Net,MVC5中的控制器。此特定页面用于编辑用户的项目,并且每个项目类型使用相同的页面。此外,所有项目类型的所有字段都存储在一个表中,我相信使用默认模型绑定器而不是一个选项。所有字段都有唯一的标识号,在视图中用作id

我用来收集各个字段的脚本:

function submitEdit(editRow) {
                alert('edit function');

                var edits = document.getElementsByClassName('edit');
                alert('get complete');
                var i;
                for (i = 0; i < edits.length; i++) {
                    alert('in loop');
                    alert(edits[i].checked);
                }

我玩过不同的提醒,我正在收集我需要的价值。

这是我试图将集合传递给的函数:

Function EditConfirmation(edits As Collection) As ActionResult

我尝试将此集合作为url参数发送。我也尝试通过像这样的ajax传递它:

            $.ajax({
                url: '/ViewDetails/EditConfirmation',
                type: 'POST',
                data: { 'edits': edits },
                success: function (result) {
                    alert("success");
                }
                .error(function (xhr, status) {
                    alert(status);
                })
            });

有没有办法将这个集合传递给我的控制器,还是有其他方法可以忽略这个?

1 个答案:

答案 0 :(得分:1)

  1. 你应该使用console.log而不是alert。
  2. 使用真正的调试器进行调试会更容易(请查看javascript debugging的chrome&amp;开发人员工具)。
  3. 您在.error(function
  4. 附近的javascript代码中有误

    你的代码应该是这样的:

    $.ajax({
        url: '/ViewDetails/EditConfirmation',
        type: 'POST',
        data: { 'edits': edits },
        success: function (result) {
            alert("success");
        },
        error: function (status) {
            alert(status);
        })
    });
    
    1. 您的主要问题是document.getElementsByClassName为您提供了一系列DOM元素,并且您无法将这些元素直接传递给您的服务器。您需要将它们更改为可以发送到服务器的数据(如字符串/数字/布尔/简单对象/数组。
    2. 我不确定您要发送的内容,但以下是您可以使用的示例:

      var edits = document.getElementsByClassName('edit');
      var dataToSend = {};
      for (i = 0; i < edits.length; i++) {
          dataToSend[edits[i]['name']] = edits[i].checked;
      }
      // Now you can use the object dataToSend (which is a simple object) as the data to send to the server
      $.ajax({
          ...
          ...
          data: { 'edits': dataToSend },
          ...
          ...
      });