Просмотр полной версии : Как отменить e.preventDefault();?
ilyamaksimov
24.08.2017, 19:12
Всем привет!
Можно ли как то при условии когда if( typeof data == "undefined") отменить e.preventDefault();
Проблема такая: вначале форма была без проверки Ajax-ом, до этого проверял с помощью Php (перед отправкой запроса в БД) и при успешном добавлении данных в БД, производился редирект на новую страницу, и с помощью $_SESSION['res']
<?php if (isset($_SESSION['res'])){
echo $_SESSION['res'];
unset($_SESSION['res']);
}
?>
выводилось сообщение-"Данные успешно добавлены".
Сейчас при условии if( typeof data == "undefined") приходится делать редирект на нужную страницу с помощью js метода, но сообщение об успешном добавлении данных в бд не получается вывести
$('#form_new_request').submit(function (e) {
e.preventDefault();
$.ajax({
url: "?views=new_application",
type: "POST",
dataType: "html",
data: $('#form_new_request').serialize() ,
success: function (res) {
$('.success-error').html(''); // удаляю html
var element = $(res).find('#error');
var data = $(res).find('.success-error').html(); //если ответ
if(typeof data == "undefined") {
window.location.href ='/index.php?views=all_application'; // вместо переадресации можно ли отменить e.preventDefault();?
}else {
$('.success-error').prepend(element); // вставляю результат сюда
}
}
});
});
но сообщение об успешном добавлении данных в бд не получается вывести
Это почему? Удалить диалог посредством $(res).find('#error'); и прочим, на json к примеру, и если нет ошибки, то "Данные успешно добавлены" и клиент может показать, после чего переход.
ilyamaksimov
24.08.2017, 19:41
Это почему? Удалить диалог посредством $(res).find('#error'); и прочим, на json к примеру, и если нет ошибки, то "Данные успешно добавлены" и клиент может показать, после чего переход.
Сообщение нужно показать на новой странице, на которую делаю переход:)
Если я каим-то образом отменю e.preventDefault() то страница сама сделает редирект (с помощью Php) и выведет сообщение
Сообщение нужно показать на новой странице, на которую делаю переход
На здоровье, показывайте, адрес перехода может содержать и GET параметр, по которому сервер поймет, что нужно сообщить "Привет, Вася". Какие проблемы?
e.preventDefault(); отменить нельзя, эта операция совершилась - форма не была отправлена естественным образом, если же можно было это и произвести, то это бы означало повторное отправление формы, вам это нужно? Вряд ли.
PS. Никто не запрещает использовать сессию и при асинхронном обмене, так что проблема надуманная.
ilyamaksimov
24.08.2017, 19:53
На здоровье, показывайте, адрес перехода может содержать и GET параметр, по которому сервер поймет, что нужно сообщить "Привет, Вася". Какие проблемы?
e.preventDefault(); отменить нельзя, эта операция совершилась - форма не была отправлена естественным образом, если же можно было это и произвести, то это бы означало повторное отправление формы, вам это нужно? Вряд ли.
PS. Никто не запрещает использовать сессию и при асинхронном обмене, так что проблема надуманная.
блин про GET параметр я не подумал! Огромное спасибо, под вечер туплю.
ilyamaksimov
24.08.2017, 20:02
На здоровье, показывайте, адрес перехода может содержать и GET параметр, по которому сервер поймет, что нужно сообщить "Привет, Вася". Какие проблемы?
e.preventDefault(); отменить нельзя, эта операция совершилась - форма не была отправлена естественным образом, если же можно было это и произвести, то это бы означало повторное отправление формы, вам это нужно? Вряд ли.
PS. Никто не запрещает использовать сессию и при асинхронном обмене, так что проблема надуманная.
Хотя подумал сейчас, это сообщение будет висеть пока пользователь не обновит страницу (т.е. пока этот GET параметр будет висеть).
А с помощью сессий сообщение показывается один раз и исчезает
<?php if (isset($_SESSION['res'])){
echo $_SESSION['res'];
unset($_SESSION['res']);
}
?>
ilyamaksimov
24.08.2017, 20:07
У меня на той странице на которую делаю редирект форма с сортировкой, пагинация, и Get параметры просто добавляются в адресную строку и сообщение об успешном добавлении в базу данных будет висеть и глаза мозолить если его не убрать
ilyamaksimov
24.08.2017, 20:09
PS. Никто не запрещает использовать сессию и при асинхронном обмене, так что проблема надуманная.
подскажи пожалуйста как использовать сессию при ajax ?
Хотя подумал сейчас, это сообщение будет висеть пока пользователь не обновит страницу
А с помощью сессий сообщение показывается один раз и исчезает
Это разве не бред?
ilyamaksimov
25.08.2017, 10:18
Это разве не бред?
объясню как я тебя понял.
ты предлагаешь сделать переадресацию на страницу с добавлением гет параметра
window.location.href ='/index.php?views=all_application&result=saccess';
на странице (на которой переадресовываю) сделать проверку
if ($_GET['result']== 'saccess'){
echo "Сообщение об успешном добавлении данных в базу данных"
}
Проблема в том что у меня на этой странице пагинация + фильтры которые тоже работают через GET
http://s019.radikal.ru/i611/1708/18/d502e7b45238.png (http://radikal.ru)
и получается что пользователь будет видеть сообщение об "успешном добавлении данных в базу данных" пока не обновит страницу, а это в моем случае неудобно потому что он (пользователь) на этой странице может захотеть воспользоваться фильтрами (сообщение будет ему мозолить глаза)
ilyamaksimov
25.08.2017, 10:20
вот я и говорю что пользуясь SESSION, этой проблемы нет
<?php if (isset($_SESSION['res'])){
echo $_SESSION['res'];
unset($_SESSION['res']);
}
?>
ilyamaksimov
25.08.2017, 10:21
вот я и говорю что пользуясь SESSION, этой проблемы нет
<?php if (isset($_SESSION['res'])){
echo $_SESSION['res'];
unset($_SESSION['res']);
}
?>
с GET так не получится
Проблема в том что у меня на этой странице пагинация + фильтры которые тоже работают через GET
А вас кто-то заставляет вставлять и в ссылки навигатора GET параметр предписывающий показать сообщение?
с GET так не получится
Это почему? Кто ведает сессиями?
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot