
24.08.2017, 19:12
|
Интересующийся
|
|
Регистрация: 15.06.2017
Сообщений: 22
|
|
Как отменить e.preventDefault();?
Всем привет!
Можно ли как то при условии когда 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); // вставляю результат сюда
}
}
});
});
|
|

24.08.2017, 19:35
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ilyamaksimov
|
но сообщение об успешном добавлении данных в бд не получается вывести
|
Это почему? Удалить диалог посредством $(res).find('#error'); и прочим, на json к примеру, и если нет ошибки, то "Данные успешно добавлены" и клиент может показать, после чего переход.
|
|

24.08.2017, 19:41
|
Интересующийся
|
|
Регистрация: 15.06.2017
Сообщений: 22
|
|
Сообщение от laimas
|
Это почему? Удалить диалог посредством $(res).find('#error'); и прочим, на json к примеру, и если нет ошибки, то "Данные успешно добавлены" и клиент может показать, после чего переход.
|
Сообщение нужно показать на новой странице, на которую делаю переход
Если я каим-то образом отменю e.preventDefault() то страница сама сделает редирект (с помощью Php) и выведет сообщение
Последний раз редактировалось ilyamaksimov, 24.08.2017 в 19:48.
|
|

24.08.2017, 19:46
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ilyamaksimov
|
Сообщение нужно показать на новой странице, на которую делаю переход
|
На здоровье, показывайте, адрес перехода может содержать и GET параметр, по которому сервер поймет, что нужно сообщить "Привет, Вася". Какие проблемы?
e.preventDefault(); отменить нельзя, эта операция совершилась - форма не была отправлена естественным образом, если же можно было это и произвести, то это бы означало повторное отправление формы, вам это нужно? Вряд ли.
PS. Никто не запрещает использовать сессию и при асинхронном обмене, так что проблема надуманная.
Последний раз редактировалось laimas, 24.08.2017 в 19:52.
|
|

24.08.2017, 19:53
|
Интересующийся
|
|
Регистрация: 15.06.2017
Сообщений: 22
|
|
Сообщение от laimas
|
На здоровье, показывайте, адрес перехода может содержать и GET параметр, по которому сервер поймет, что нужно сообщить "Привет, Вася". Какие проблемы?
e.preventDefault(); отменить нельзя, эта операция совершилась - форма не была отправлена естественным образом, если же можно было это и произвести, то это бы означало повторное отправление формы, вам это нужно? Вряд ли.
PS. Никто не запрещает использовать сессию и при асинхронном обмене, так что проблема надуманная.
|
блин про GET параметр я не подумал! Огромное спасибо, под вечер туплю.
|
|

24.08.2017, 20:02
|
Интересующийся
|
|
Регистрация: 15.06.2017
Сообщений: 22
|
|
Сообщение от laimas
|
На здоровье, показывайте, адрес перехода может содержать и GET параметр, по которому сервер поймет, что нужно сообщить "Привет, Вася". Какие проблемы?
e.preventDefault(); отменить нельзя, эта операция совершилась - форма не была отправлена естественным образом, если же можно было это и произвести, то это бы означало повторное отправление формы, вам это нужно? Вряд ли.
PS. Никто не запрещает использовать сессию и при асинхронном обмене, так что проблема надуманная.
|
Хотя подумал сейчас, это сообщение будет висеть пока пользователь не обновит страницу (т.е. пока этот GET параметр будет висеть).
А с помощью сессий сообщение показывается один раз и исчезает
<?php if (isset($_SESSION['res'])){
echo $_SESSION['res'];
unset($_SESSION['res']);
}
?>
|
|

24.08.2017, 20:07
|
Интересующийся
|
|
Регистрация: 15.06.2017
Сообщений: 22
|
|
У меня на той странице на которую делаю редирект форма с сортировкой, пагинация, и Get параметры просто добавляются в адресную строку и сообщение об успешном добавлении в базу данных будет висеть и глаза мозолить если его не убрать
|
|

24.08.2017, 20:09
|
Интересующийся
|
|
Регистрация: 15.06.2017
Сообщений: 22
|
|
Сообщение от ilyamaksimov
|
PS. Никто не запрещает использовать сессию и при асинхронном обмене, так что проблема надуманная.
|
подскажи пожалуйста как использовать сессию при ajax ?
|
|

24.08.2017, 20:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ilyamaksimov
|
Хотя подумал сейчас, это сообщение будет висеть пока пользователь не обновит страницу
|
Сообщение от ilyamaksimov
|
А с помощью сессий сообщение показывается один раз и исчезает
|
Это разве не бред?
|
|

25.08.2017, 10:18
|
Интересующийся
|
|
Регистрация: 15.06.2017
Сообщений: 22
|
|
Сообщение от laimas
|
Это разве не бред?
|
объясню как я тебя понял.
ты предлагаешь сделать переадресацию на страницу с добавлением гет параметра
window.location.href ='/index.php?views=all_application&result=saccess';
на странице (на которой переадресовываю) сделать проверку
if ($_GET['result']== 'saccess'){
echo "Сообщение об успешном добавлении данных в базу данных"
}
Проблема в том что у меня на этой странице пагинация + фильтры которые тоже работают через GET
и получается что пользователь будет видеть сообщение об "успешном добавлении данных в базу данных" пока не обновит страницу, а это в моем случае неудобно потому что он (пользователь) на этой странице может захотеть воспользоваться фильтрами (сообщение будет ему мозолить глаза)
|
|
|
|