如何从两种不同的方法提交jQuery表单

时间:2016-11-28 21:45:53

标签: javascript jquery forms datatables

我有一个jQuery表单private void templateDocuments() { string path = @"\\directoryname\foldername"; try { DirectoryInfo dinfo = new DirectoryInfo(path); FileInfo[] Files = dinfo.GetFiles("*.doc"); foreach (FileInfo file in Files) { listView2.Items.Add(file.Name); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } 方法,我需要根据下面代码中注释的3个值POST提交。

如何将这三个变量传递给PostData形式的方法?他们遍历submit函数,我不知道如何将其作为数组传递以及如何发布这些数据。

each

1 个答案:

答案 0 :(得分:1)

你的例子过于复杂和混乱。你想要实现的目标实际上非常简单。你不必通过任何东西来获得你的价值观。您可以在按钮单击侦听器回调方法中执行相同的操作。

我首先要分开关注点。隔离AJAX调用和解绑方法:

function postTheData(postData) {
  $.ajax({
    type: "POST",
    url: "/Home/Index",
    data: JSON.stringify(postData), 
    success: function (data) {
      alert("Success");
      unbind();
    },
    error: function () {
      alert("error");
    }
  });
}

function unbind() {
  $("form").unbind('submit').submit();
}

然后,尝试意识到这些是监听器寄存器。您正在将操作附加到DOM事件。按下按钮或提交表单时,将调用这两个函数中的一个。您可以以相同的方式获取每个数据。提交表单不会为方法添加任何特殊参数。您仍然需要自己提取表单数据。

此外,从您的问题来看,.each方法的目的并不清楚。如果没有好好看看你的标记,很难说出你想要的是什么。但是,足以说明,你会以相同的方式从输入中提取每个案例的值:

// this is called when the button is clicked
$('#button').click(function () {
  var val1, val2, val3;
  $('.selected').each(function () {
    val1 = $(this).find(":selected").text(); //Post Data
    val2 = $(this).find('input:text').val(); //Post Data
    val3 = $(this).attr('value'); //PostData
  });

  postTheData({pd: val1, ta: val2, tb: val3});
});

// this is called when the form is submitted (by pressing enter inside an input, or pressing the "submit" button)
$("form").submit(function (e) {
  var val1, val2, val3;
  e.preventDefault();
  //just get the values the same way
  $('.selected').each(function () {
    val1 = $(this).find(":selected").text(); //Post Data
    val2 = $(this).find('input:text').val(); //Post Data
    val3 = $(this).attr('value'); //PostData
  });
  postTheData({pd: val1, ta: val2, tb: val2});
});