javascript - 从页面上的任何表单类 POST 输出到模态
问题描述
对不起,我是 jQuery 和 Javascript 的初学者。我希望能够从具有类 ajax 的页面上的任何表单将结果放入我的模式中。我的代码在下面,但无法正常工作。目前它会在新页面而不是模式中打开帖子结果。任何人都可以阐明我的代码吗?
非常感谢
$(document).ready(function() {
$('.ajax').click(function() {
var that = $(this),
url = that.attr('action'),
type = that.attr('method'),
data = {};
that.find('name').each(function(index, value) {
var that = $(this),
name = that.attr('name'),
value = that.val();
data[name] = value;
});
console.log(value);
// AJAX request
$.ajax({
url: url,
type: type,
data: data,
success: function(response){
// Add response in Modal body
$('.modal-body').html(response);
// Display Modal
$('#aaModal').modal('show');
}
});
});
});
解决方案
这可能是因为您的浏览器默认提交表单。它不知道你在做 AJAX 的东西。要防止这种情况,请使用preventDefault ()。
除此之外,jQuery 有一个用于序列化(1和2)表单数据的内置函数。
$(document).ready(function() {
$('form.ajax').click(function(event) {
event.preventDefault(); // prevents opening the form action url
var $form = $(this),
url = $form.attr('action'),
type = $form.attr('method'),
data = $form.serialize();
// console.log(value); // value doesnt exist outside of your loop btw
// AJAX request
$.ajax({
url: url,
type: type,
data: data,
success: function(response){
// Add response in Modal body
$('.modal-body').html(response);
// Display Modal
$('#aaModal').modal('show');
}
});
});
});
此外,如果将单击事件处理程序绑定到表单或按钮,我猜是第一个,这还不是很清楚。您应该将处理程序更改为以下内容:
$(document).ready(function() {
$('form.ajax').on('submit', function(event) {
推荐阅读
- r - 如何解决 RStudio 中的 TIFFOpen 错误弹出窗口?
- python - 如何为 django rest 框架 DecimalField 序列化器提供选择?
- react-native - ScrollView 不显示反应原生的所有内容
- javascript - 如何在删除前在 toastr 中要求确认
- javascript - 如何跨不同组件使用数据或方法
- swiftui - SwiftUI 中选取器和表单的奇怪行为
- php - 无法读取文件名输入yii2
- firebase - 如何检查传入的数字数据是否大于或小于 Firestore 安全规则中的某个限制?
- python - 如何在运行时更新包含在变量 V1 中的变量 V2
- nunit - nunit 3 在命令行上测试为 nunit 2.6.4