it-swarm.com.de

Benutzerdefinierte Komponente - Handle 303 Redirect on AJAX

Hallo, ich entwickle eine benutzerdefinierte Komponente in Joomla. Nach dem erfolgreichen Speichern leitet der Controller 303 mit einer benutzerdefinierten Nachricht um. Aber mit der AJAX Schnittstelle in der Mitte, scheint meine Seite nicht auf diese Seite umgeleitet zu werden. Sie bleibt auf derselben Seite.

AJAX Request Network Console

Wie gehe ich mit dem 303-Statuscode um und zwinge meine Seite, auf eine Seite umzuleiten, die vom Controller festgelegt wird?

Hier ist mein js Code:

$('#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

In Joomla speichern reguläre Controller eine Umleitung. Auf Ajax-Seite ist es vollkommen in Ordnung.

Anstatt zu versuchen, eine Umleitung zu vermeiden, schreiben Sie einfach einen bestimmten Speicher "saveAsync" in Ihren Controller, ohne Umleitung.

Einige Bibliotheken wie Backbone.JS oder AngularJS übermitteln Formulare auf andere Weise (PHP Input Raw Json) als herkömmliche Joomla-Formulare und müssen im Controller entsprechend behandelt werden.

1
Anibal