Ajax表单重载页面,而不是在后台工作

Ajax form reloading page instead of working in the background

本文关键字:后台 工作 表单 重载 Ajax      更新时间:2023-09-26

首先,根据其他建议,我尝试过移动preventDefault(),但没有成功。

我的反馈表单使用JavaScript将表单字段传递给"process.php"并返回相关消息(即:" success "或"fail")

它正在做它的工作,但不是停留在同一个页面'feedback.php',而是加载'process.php'页面。{"数据":"数据值"}

下面是代码:
$(document).ready(
function(){
    $('form').submit(
        function(event){
            var formData =
            {
                'name' : $('input[name=name]').val(),
                'page' : $('input[name=page]').val()
            };
            $('.form-group').removeClass('has-error'); // remove the error class
            $('.error').remove(); // remove the error text
            event.preventDefault();
            $.ajax({
                    type     : 'POST', // define the type of HTTP verb we want to use (POST for our form)
                    url      : 'process.php', // the url where we want to POST
                    data     : formData, // our data object
                    dataType : 'json', // what type of data do we expect back from the server
                    encode   : true
                })
            .done(function(data){
                    if ( ! data.success)
                    {
                        if (data.errors.name)
                        {
                            $('#name-group').addClass('has-error'); // add the error class to show red input
                            $('#nameField').append(data.errors.name); // add the actual error name under our input
                        }
                    }
                    else 
                    {
                        $('form').append('<div class="buttonError">Message Sent!</div>');
                        form.myButton.disabled = true;
                    }
                }
            );
            .fail(function(data){
                    $('form').append('<div class="buttonError">Failed!</div>');
                }
                console.log(data);
            );
            event.preventDefault();
        }
    );
});

看起来像调用$的语法错误。在Ajax中,应该这样更正:

    $.ajax({
        type     : 'POST', // define the type of HTTP verb we want to use (POST for our form)
        url      : 'process.php', // the url where we want to POST
        data     : formData, // our data object
        dataType : 'json', // what type of data do we expect back from the server
        encode   : true
    }).done(function(data){
        if ( ! data.success)
        {
            if (data.errors.name)
            {
                $('#name-group').addClass('has-error'); // add the error class to show red input
                $('#nameField').append(data.errors.name); // add the actual error name under our input
            }
        }
        else 
        {
            $('form').append('<div class="buttonError">Message Sent!</div>');
            form.myButton.disabled = true;
        }
    }).fail(function(data){
        $('form').append('<div class="buttonError">Failed!</div>');
        console.log(data);
    });

删除HTML文件中表单标记中的方法和操作。看起来不错。