我已经尝试了至少查询有关AJAX / jQuery失败的十几个问题,但似乎没有一个问题是我的问题。
我有一个依赖AJAX调用的站点,可以在用户登录和交互时加载不同的部分。后端全部是PHP。据我所知,我做了一切工作,但不知何故,在网上坐了几个星期,一些随机的东西已经停止工作了。黑客攻击?只是虫子?我不知道。我部署它时,该功能已经过全面测试和功能。
我暂时在Firefox和Chrome中测试它。
首先:我有一些表单,根据用户的选择,在提交时加载其他表单。在最后一个表单的末尾还有一个提交按钮。所有这些都使用POST(这是我的问题吗?太多提交函数/ AJAX调用并发运行?)。
如果我在页面上,打开控制台,复制/粘贴代码以便以这种方式运行它,它完全按预期执行。
如果我的代码在其OWN文件中,则包含在$(document).ready(function() {
中,它会失败,日志中没有任何警告或错误。
如果我在.JS文件中与JS的其余部分一起使用它,它也会失败而没有任何信息。
$('#take_att').submit(function(e) {
e.preventDefault();
$.ajax({
url: 'tools/attendance.php',
type: 'POST',
data: $('#take_att').serialize(),
success: function(data) {
$('#controls').empty();
$('#controls').append(data);
}
});
});
它不会阻止默认(因此它允许表单提交),因此刷新页面(因为action ='')。
如果不合并大量不同文件的HTML并模拟表单输入,我无法真正制作JS小提琴,遗憾的是无法提供登录访问权。
提前感谢任何见解!
答案 0 :(得分:2)
有理由,因为你说表单是通过ajax加载的,你需要使用event delegation。由于表单是在你的dom ready处理程序被触发时通过ajax加载的,因此表单可能尚未加载到dom,因此选择器$('#take_att')
可能不会返回任何元素,因此提交处理程序不会附加到表单。 / p>
jQuery(function ($) {
$(document).on('submit', '#take_att', function (e) {
e.preventDefault();
$.ajax({
url: 'tools/attendance.php',
type: 'POST',
data: $('#take_att').serialize(),
success: function (data) {
$('#controls').empty();
$('#controls').append(data);
}
});
});
})