AJAX表单提交-“;返回False”&";preventDefault”;不起作用


AJAX Form Submission - "Return False" & "preventDefault" not working

我正在使用表单提交工具从API获取信息。我连接的服务器因超时而臭名昭著,所以我在jQuery计时器上提交,并使用"检查"系统来确保我没有在服务器上等待响应另一个请求。

我遇到的问题是,我无法使触发的.submit()不重新加载页面。无论我使用了多少return false;event.preventDefault(),要么表单从不提交,要么页面重新加载。

干杯。

jQuery(document).ready(function() {
    setInterval(function() {
        var check = jQuery('div#go').length;
        var count = parseInt(jQuery('h3.timer').html());
        count++;
        jQuery('h3.timer').text( count );
        if ( check ) {
            //alert( 'running' );
            jQuery( 'form#woowps_next_page' ).submit(function(event) {
                event.preventDefault()
                jQuery('div#go').remove();
                jQuery.ajax({
                    type: "POST",
                    url: '/wp-content/plugins/wps-woo/inc/category_repair_ajax.php',
                    data: jQuery("form#woowps_next_page").serialize(),
                    success: function(data) {
                        alert( 'win' );
                        var current_page = jQuery('input.woowps_next_page').val();
                        jQuery( 'h3#repair_update' ).text( 'Category Pages Updated:' + current_page );
                        jQuery( 'div#woowps_entry' ).html(data); // show response from the php script.
                        jQuery( '<div id="go"></div>' ).appendTo('div#woowps_entry');
                    },
                        error: function( data ) {
                        alert( 'lose' );
                         var current_page = jQuery('input.woowps_next_page').val();
                        jQuery( 'h3#repair_update' ).text( 'Category Pages Updated: ' + current_page );
                        jQuery( '<div id="go"></div>' ).insertAfter('div#woowps_entry');
                        jQuery('h3.timer').text( '0' );
                    }
                });
            });
        }
    }, 1000);
});

submit(...)函数将处理程序绑定到表单的提交事件。这意味着您给它的函数在调用submit(...)时没有运行,它将在表单提交时运行。因此,在加载文档后绑定函数,但不需要每秒绑定一次。

https://api.jquery.com/submit/

为了防止多个请求被发送,你可以这样做:

jQuery(document).ready(function() {
    var requestSend = false;
    jQuery('form#woowps_next_page').submit(function(event) {
        event.preventDefault();
        if(!requestSend) {
            requestSend = true;
            jQuery.ajax({
                type: "POST",
                url: '...',
                data: jQuery("form#woowps_next_page").serialize(),
                success: function(data) {
                    requestSend = false;
                    // whatever
                },
                error: function( data ) {
                    requestSend = false;
                    // error handling
                }
            });
        }
    });
});

已修复!我对退货有意见。这很好,因为我已经解决了问题!我不知道你不必通过AJAX将.submit()数据POST。我保留了我的定时器功能,因为当页面卡住时,它会让我知道。这是我的答案:

jQuery(document).ready(function() {
    setInterval(function() {
        var check = jQuery('div#go').length;
        var count = parseInt(jQuery('h3.timer').html());
        count++;
        jQuery('h3.timer').text( count );
        if ( check === 1) {
            jQuery('div#go').remove();
            jQuery.ajax({
                type: "POST",
                url: '/wp-content/plugins/wps-woo/inc/category_repair_ajax.php',
                data: jQuery("form#woowps_next_page").serialize(),
                success: function(data) {

                    var current_page = jQuery('input.woowps_next_page').val();
                    jQuery( 'h3#repair_update' ).text( 'Category Pages Updated:' + current_page );
                    jQuery( 'div#woowps_entry' ).html(data); // show response from the php script.
                    jQuery( '<div id="go"></div>' ).appendTo('div#woowps_entry');
                    alert(current_page);
                 },
                 error: function( data ) {
                     alert('lose');
                     var current_page = jQuery('input.woowps_next_page').val();
                    jQuery( 'h3#repair_update' ).text( 'Category Pages Updated: ' + current_page );
                    jQuery( '<div id="go"></div>' ).insertAfter('div#woowps_entry');
                    jQuery('h3.timer').text( '0' );
                 }
          });
        }
    }, 1000);
});