Форма перенаправления после проверки - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь перенаправить форму на https://sodacitysolar.com/consultation.html на https://sodacitysolar.com/thanks.html после проверки формы.Я проследил код и считаю, что решение лежит где-то ниже, это файл form.js:

$(function()
{
    function after_form_submitted(data) 
    {
        if(data.result == 'success')
        {
            $('form#reused_form').hide();
            $('#success_message').show();
            $('#error_message').hide();
        }
        else
        {
            $('#error_message').append('<ul></ul>');

            jQuery.each(data.errors,function(key,val)
            {
                $('#error_message ul').append('<li>'+key+':'+val+'</li>');
            });
            $('#success_message').hide();
            $('#error_message').show();

            //reverse the response on the button
            $('button[type="button"]', $form).each(function()
            {
                $btn = $(this);
                label = $btn.prop('orig_label');
                if(label)
                {
                    $btn.prop('type','submit' ); 
                    $btn.text(label);
                    $btn.prop('orig_label','');
                }
            });

        }//else
    }

    $('#reused_form').submit(function(e)
      {
        e.preventDefault();

        $form = $(this);
        //show some response on the button
        $('button[type="submit"]', $form).each(function()
        {
            $btn = $(this);
            $btn.prop('type','button' ); 
            $btn.prop('orig_label',$btn.text());
            $btn.text('Sending ...');
        });


                    $.ajax({
                type: "POST",
                url: 'handler.php',
                data: $form.serialize(),
                success: after_form_submitted,
                dataType: 'json' 
            });        

      });   
});

Я пытался заменить этот код приведенным ниже кодом, но он не работает:

$('form#reused_form').hide();
            $('#success_message').show();
            $('#error_message').hide();



function redirect()
{
    window.location.href="thanks.html";
}

Есть ли шанс, что вы, ребята, могли бы указать мне правильное направление?

РЕДАКТИРОВАТЬ:

Вот код, который я пытался использовать:

$(function()
    {
        function after_form_submitted(data) 
        {
            if(data.result == 'success')
            {
                 function redirect()
    {
        window.location.href="thanks.html";
    }
            }
            else
            {
                $('#error_message').append('<ul></ul>');

                jQuery.each(data.errors,function(key,val)
                {
                    $('#error_message ul').append('<li>'+key+':'+val+'</li>');
                });
                $('#success_message').hide();
                $('#error_message').show();

                //reverse the response on the button
                $('button[type="button"]', $form).each(function()
                {
                    $btn = $(this);
                    label = $btn.prop('orig_label');
                    if(label)
                    {
                        $btn.prop('type','submit' ); 
                        $btn.text(label);
                        $btn.prop('orig_label','');
                    }
                });

            }//else
        }

        $('#reused_form').submit(function(e)
          {
            e.preventDefault();

            $form = $(this);
            //show some response on the button
            $('button[type="submit"]', $form).each(function()
            {
                $btn = $(this);
                $btn.prop('type','button' ); 
                $btn.prop('orig_label',$btn.text());
                $btn.text('Sending ...');
            });


                        $.ajax({
                    type: "POST",
                    url: 'handler.php',
                    data: $form.serialize(),
                    success: after_form_submitted,
                    dataType: 'json' 
                });        

          });   
    });

1 Ответ

0 голосов
/ 01 января 2019

Вы создали функциональный блок, который ничего не будет делать, если вы на самом деле не вызовете эту конкретную функцию.

Например:

function foo() {
  console.log('bar');
}

Здесь у меня есть простая функция, которая будет печатать bar в моей консоли.Однако эта функция, приведенная выше, ничего не даст, если я сначала не вызову ее:

foo() // bar

После вызова в моем коде я затем укажу bar в своей консоли.


ВыВы можете освежить свои знания о функции здесь :

Вообще говоря, функция - это «подпрограмма», которая может вызываться внешним (или внутренним в случае рекурсии) кодом дляфункция.Как и сама программа, функция состоит из последовательности операторов, называемых телом функции.Значения могут быть переданы в функцию, и функция вернет значение.


Решение

Но чтобы ваш код работал, просто добавьте:

//...
redirect(); // calls the redirect function
// ...

Завершенный код

Вот как это должно выглядеть:

$(function () {
  function after_form_submitted(data) {
    if (data.result == 'success') {
      $('form#reused_form').hide();
      $('#success_message').show();
      $('#error_message').hide();

      // call the function
      redirect();

    } else {
      $('#error_message').append('<ul></ul>');

      jQuery.each(data.errors, function (key, val) {
        $('#error_message ul').append('<li>' + key + ':' + val + '</li>');
      });
      $('#success_message').hide();
      $('#error_message').show();

      //reverse the response on the button
      $('button[type="button"]', $form).each(function () {
        $btn = $(this);
        label = $btn.prop('orig_label');
        if (label) {
          $btn.prop('type', 'submit');
          $btn.text(label);
          $btn.prop('orig_label', '');
        }
      });

    } //else
  }

  $('#reused_form').submit(function (e) {
    e.preventDefault();

    $form = $(this);
    //show some response on the button
    $('button[type="submit"]', $form).each(function () {
      $btn = $(this);
      $btn.prop('type', 'button');
      $btn.prop('orig_label', $btn.text());
      $btn.text('Sending ...');
    });


    $.ajax({
      type: "POST",
      url: 'handler.php',
      data: $form.serialize(),
      success: after_form_submitted,
      dataType: 'json'
    });
  });
  
});

function redirect() {

  window.location.href = 'thanks.html';

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...