gpt4 book ai didi

javascript - 如何通过两种不同的方法提交 jQuery 表单

转载 作者:行者123 更新时间:2023-12-03 05:33:04 26 4
gpt4 key购买 nike

我有一个 jQuery 表单 POST 方法,需要根据下面代码中注释为 PostData 检索到的 3 个值来提交该方法。

如何将这三个变量传递到表单 submit 方法中?他们迭代 each 函数,但我不确定如何将其作为数组传递以及如何发布此数据。

$(document).ready(function () {
var table = $('#example').DataTable();

$('#example tbody').on('click', 'tr', function () {
$(this).toggleClass('selected');
});

$('#button').click(function () {
//var i = 0;
//Commented out = increment and return whole row
$('.selected').each(function () {
alert($(this).find(":selected").text()); //Post Data
alert($(this).find('input:text').val()); //Post Data
alert($(this).attr('value')); //PostData

// alert(table.rows('.selected').data()[i]);
//i++;
});
});

$("form").submit(function (e) {

e.preventDefault();
var postData = val
var postData2= val2
var postData3=val3
$.ajax({
type: "POST",
url: "/Home/Index",
data: JSON.stringify({ pd: postData, ta: val2, tb: val3 }),
success: function (data) {
alert("Success");
submit();
},
error: function () {
alert("error");
}
});
})
})

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

最佳答案

您的示例过于复杂且困惑。您想要实现的目标实际上非常简单。您无需传递任何内容即可获取您的值。您可以执行与按钮单击监听器回调方法中已执行的操作相同的操作。

我将从分离关注点开始。隔离 AJAX 调用和取消绑定(bind)方法:

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

关于javascript - 如何通过两种不同的方法提交 jQuery 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40854088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com