Некоректный вывод alert'a

имеется ajax который считывает данные с формы и далее передает в скрипт, а так же при необходимости выводит сообщение в alert, проблема в том, что вместо всплывающего окна, сообщение выводится на белом экране, что может быть не так?

js:

$(document).ready(function() {
$('form').submit(function(event) {
    if ($(this).attr('id') == 'no_ajax') {
        return;
    }
    var json;
    event.preventDefault();
    $.ajax({
        type: $(this).attr('method'),
        url: $(this).attr('action'),
        data: new FormData(this),
        contentType: false,
        cache: false,
        processData: false,
        success: function(result) {
            json = jQuery.parseJSON(result);
            if (json.url) {
                window.location.href = '/' + json.url;
            } else {
                alert(json.status + ' - ' + json.message);
            }
        },
    });
});

});

Метод для вывода сообщения

    public function message($status, $message) {
    exit(json_encode(['status' => $status, 'message' => $message]));
}

Вызов метода

$this->view->message('status', 'error');

Вывод введите сюда описание изображения


Ответы (2 шт):

Автор решения: darkvortek

Лучше сделать проверку на if (json.status == 'success') { вместо if (json.url) Сейчас у вас корее всего в else код просто не попадает

→ Ссылка
Автор решения: Igor

Ваш обработчик submit-а не навесился на форму. Происходит обычный сабмит и загрузкa новой страницы, содержимое которой - Ваш JSON.

Возможная причина - форма создается после $('form').submit(....

Другой вариант - id формы все-таки 'no_ajax'.

→ Ссылка