AJAX请求无法正常工作

时间:2014-09-10 10:29:31

标签: javascript jquery ajax forms mailchimp

嘿伙计们和女孩们,

我有一个表单,我想使用AJAX提交。对于回调函数,基本上我想要发生的是,表单元素消失(.hide)并被div元素替换(将成功或类似的东西)。然后我希望该函数暂停5秒钟,然后重定向到不同的URL。

AJAX请求成功提交(因为我收到一封电子邮件到我应该指定的地​​址),但回调函数没有正确执行。有什么建议吗?

 $(document).ready( function () {
        var $form = $('form');
        function register($form) {
            $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                cache       : false,
                dataType    : 'json',
                contentType: "application/json; charset=utf-8",
                success: function(data){
                    $("#mc-embedded-subscribe-form").hide("slow");
                    $("#form").html('<div class="some-class">Some text that shows up upon successful AJAX request</div>')
                    setTimeout(5000);
                    $(".button").addEventListener("click", function(){
                        window.location.href='http://www.neuyear.net/collections/time-domination-products';
                    })
                }
            })
        }
    }

**

更新#1

**

这是我最初加载网站时遇到的唯一错误代码(我听说这些错误只会在开发工具中弹出而不会影响用户?) enter image description here

但是当我提交表单时,我得到了这个错误代码 enter image description here

我还将我的JavaScript更新为以下代码,从一些发布的人那里获得建议,但仍然没有100%工作

$(document).ready(function() {
    var $form = $('form');
    $form.submit(function(){
        $.ajax({
            type: $form.attr('method'),
            url: $form.attr('action'),
            data: $form.serialize(),
            cache       : false,
            dataType    : 'json',
            success: function(data){
                $("#mc-embedded-subscribe-form").hide("slow");
                $("#form").html('<div class="some-class">Some text that shows up upon successful AJAX request</div>')
            }
        });
        setTimeout(function(){
            window.location.href='http://www.neuyear.net/collections/time-domination-products';
        }, 5000)
    });
});

乔伊

1 个答案:

答案 0 :(得分:2)

setTimeout 用法错误。

见:

$(document).ready( function () {
        var $form = $('form');
        function register($form) {
            $.ajax({
                type: $form.attr('method'),
                url: $form.attr('action'),
                data: $form.serialize(),
                cache       : false,
                dataType    : 'json',
                contentType: "application/json; charset=utf-8",
                success: function(data){
                    $("#mc-embedded-subscribe-form").hide("slow");
                    $("#form").html('<div class="some-class">Some text that shows up upon successful AJAX request</div>')
                    setTimeout(function(){
                        window.location.href='http://www.neuyear.net/collections/time-domination-products';
                    }, 5000);
                }
            })
        }
    });

此外,如果您希望用户单击链接并追求ajax成功,则理想情况下应单独声明以下内容。

$(".button").addEventListener("click", function(){
     window.location.href='http://www.neuyear.net/collections/time-domination-products';
})