Задать вопрос
@alekskondr
php, javascript, yii2, drupal, MQL

Как сделать при нажатии формы срабатывал ajax и отправляло на другую страницу?

Прописал чтоб срабатывал ajax и отправляло на другую страницу, не то и то не работает.
<form  action="word.php"  id="formex" method="POST"  onsubmit="process()">
<legend>Test From</legend>
<label for="name">Name:</label><input  value="" type="text">
<input value="Send" type="submit">
</form>


function process() {
      setTimeout(function() {
        var msgi   = $('#formex').serialize();
        $.ajax({
          type: 'POST',
          url: 'error.php',
          data: msgi,
          
        });
      'location.href="http://mysite.com/error.php"',
      return false;},
      6000);
}
  • Вопрос задан
  • 441 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@alekskondr Автор вопроса
php, javascript, yii2, drupal, MQL
Сделал так и все как надо работает
function process() {
      setTimeout(function() {
        var msgi   = $('#formex').serialize();
        $.ajax({
          type: 'POST',
          url: 'error.php',
          data: msgi,
          success: function(data) {
            location="http://mysite.ru/503.php";
          },
          error:  function(xhr, str){
      alert('Возникла ошибка: ' + xhr.responseCode);
          }
        });
      return false;},
      6000);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
yurakostin
@yurakostin
Front-end developer
На самом деле не очень понятно, чего вы хотите достичь.

Зачем вам ajax, если вы хотите перенаправить пользователя на другую страницу?
Оставьте тогда форму в покое и не добавляйте ей js обработчик.

Кстати не очень понятно, чего вы ждёте от строки:
'location.href="http://mysite.com/error.php"'

Или это такой способ комментирования?
Ответ написан
dummyman
@dummyman
диссидент-схизматик
у вас проблема не в том, что не срабатывает аякс, он может то, если успеет, может и сработать... просто вы не отменяете стандартных обработчиков форм.
document.querySelector("form#formex").addEventListener('submit', function(e) {
e.preventDefault();
e.stopPropagation();
// ...
// дальше свой код
});


Писал по памяти могут быть очепятки.
Ответ написан
tot0ro
@tot0ro
Front - end developer
Лучше так:

document.forms['formex'].addEventListener('submit', function(e) {
  e.preventDefault();
  // ...
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы