web-dev-qa-db-fra.com

Composant personnalisé - Traitement de la redirection 303 sur AJAX

Bonjour, je développe un composant personnalisé dans Joomla. Après une sauvegarde réussie, mes contrôleurs ont défini la redirection 303 avec un message personnalisé. Mais avec l'interface AJAX au milieu, ma page ne semble pas être redirigée vers cette page. Elle reste sur la même page.

AJAX Request Network Console

Comment gérer le code d'état 303 et forcer ma page à rediriger les pages définies par le contrôleur?

Voici mon code js:

$('#submit').click(function(e){
    $('.requestForm').ajaxSubmit({
        url: 'index.php?option=com_helpdesk&task=request.save',
        type: 'POST',
        beforeSubmit: function () {
            $.blockUI({css: {
                    border: 'none',
                    padding: '15px',
                    backgroundColor: '#000',
                    '-webkit-border-radius': '10px',
                    '-moz-border-radius': '10px',
                    opacity: .5,
                    color: '#fff'
                }});
        },
        success: function(result, status, xhr) {
            var response = $.parseJSON(result);
            if (!response['success'])
            {
                var html = '<div class="alert alert-warning alert-dismissible" role="alert">';
                html += '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>';
                html += '<p><strong>Warning!</strong></p>';
                $.each(response['messages']['error'], function (index, value) {
                    html += '<p>' + value + '</p>';
                });
                html += '</div>';
                $('#system-message-container').html(html);
            }
            else
            {
                //Here my page get's 303 redirect which needs to be handle.
            }
        },
        statusCode: {
            // I tried this but this is not working
            303: function() {
                $.unblockUI();
                alert('hurray');
            }
        },
        complete: function () {
            $.unblockUI();
        }
    });
    e.preventDefault();
});
1
Sahil Purav

Dans Joomla, les contrôleurs réguliers enregistrent une redirection. Du côté de l'Ajax, c'est parfaitement correct.

Au lieu d'essayer d'éviter la redirection, écrivez simplement une sauvegarde "saveAsync" dans votre contrôleur, sans redirection.

En outre, certaines bibliothèques, telles que Backbone.JS ou AngularJS, soumettent les formulaires d’une manière différente (php input raw json) des formulaires Joomla habituels et doivent être gérés en conséquence dans le contrôleur.

1
Anibal