Некоректный вывод 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'.
