Я работаю над веб-сайтом с тяжелым Ajax, и я использую codeigniter для его создания.
У меня есть форма с методом отправки, и эта форма отправляется с использованием запроса ajax, который вызывает функцию с оператором if / else, например:

    if(isset($_POST['save']))
    {
        $data['phase'] = 'translating';
    }
    elseif(isset($_POST['submit']))
    {
        $data['phase'] = 'waiting_approve';
    }

Оператор if / else проверяет, какая кнопка была нажата, и работает на 100% после публикации данных формы обычным способом, , но никогда не работает при публикации с использованием запроса ajax.
Мой запрос ajax:

    $('#workspace-content').delegate('form#article', 'submit', function(){
    var that = $('form#article'),
        url = that.attr('action'),
        type = that.attr('method'),
        data = {};

        data = that.serialize();

        $.ajax({
            type: type,
            url : url,
            data : data,
            dataType: 'json',

            success: function(data){
                $('#header-search-field').append(data.msg).delay(3000).fadeOut(500, function(){
                    var that = $(this);
                    that.html('').fadeIn();
                });
            }
        });

    return false;
});

Есть предложения или решения? !!


HTML-форма:






Ответы (1)

Когда вы отправляете форму в обычном режиме, кнопка, которую вы использовали для ее отправки, будет включена в данные POST. Но когда вы отправляете с помощью AJAX и используете that.serialize (), данные POST включают только поля ввода - кнопка отправки не включается. Вам необходимо прикрепить свой код отправки к кнопкам, чтобы вы могли добавить соответствующие значения к данным.

$('#workspace-content').on('click', 'form#article .btn', function(){
    var that = $(this).closest("form"),
        url = that.attr('action'),
        type = that.attr('method'),
        data = that.serialize();
    data += '&' + this.name + '=1';

    $.ajax({
        type: type,
        url : url,
        data : data,
        dataType: 'json',

        success: function(data){
            $('#header-search-field').append(data.msg).delay(3000).fadeOut(500, function(){
                var that = $(this);
                that.html('').fadeIn();
            });
        }
    });

    return false;
});

2022 WebDevInsider