JavaScript / jQuery提交函数/ AJAX调用从控制台工作,而不是从链接文件

时间:2014-02-24 08:25:22

标签: javascript jquery ajax

我已经尝试了至少查询有关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小提琴,遗憾的是无法提供登录访问权。

提前感谢任何见解!

1 个答案:

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