2015-09-29 2 views
0

Я нашел так много сообщений об этом, но я не могу заставить это работать на жизнь меня. При отправке формы мне нужен код: 1) отправить форму и 2) перенаправить на одно из мест внутри операторов case. Я могу получить форму для отправки без случаев, и я могу получить форму для перенаправления, но я не могу заставить ее сделать то и другое. Пожалуйста, скажите мне, что я на правильном пути, но просто имею код в неправильном месте, я слишком долго смотрел на этот путь и попал в блокпост.Jquery submit form then redirect not working

$("#submitBtn").click(function (event) { 
     event.preventDefault(); 
     var validator = $(this).closest("form").kendoValidator({ 
      messages: { 
       required: function (input) { return getRequiredValidationMessage(input) }, 
       custom: function (input) { return getInvalidValidationMessage(input) }, 
      }, 
      rules: { 
       custom: function (input) { 
        var minlength = $(input).attr('data-minlength'); 
        var required = $(input).attr('required'); 
        if (typeof minlength !== typeof undefined && minlength !== false && ((typeof required !== typeof undefined && required !== false) || $(input).val().length > 0)) { 
         var minlength = $(input).data('minlength'); 
         return $(input).val().length >= minlength; 
        } else { 
         return true; 
        } 
       } 
      } 
     }).data("kendoValidator"); 
     if (validator !== undefined) { 
      if (validator.validate()) { 
       $("aspnetForm").submit(); 

       if ($("aspnetForm").submit()){ 
        switch(document.getElementById('interests').value){ 
         case "stair-lifts": 
         window.location.href="/Catalog/Online-Catalog-Category/15522/Stair-Lifts"; 
         break; 

         case "wheelchair-ramps": 
         window.location.href="/Catalog/Online-Catalog-Category/15521/Ramps"; 
         break; 

         case "roll-in-barrier-free-showers": 
         window.location.href="/Catalog/Online-Catalog-Category/15529/Bathroom-Safety"; 
         break; 

         case "walk-in-tubs": 
         window.location.href="/Catalog/Online-Catalog-Category/15529/Bathroom-Safety"; 
         break; 

         case "patient-lifts-ceiling-lifts": 
         window.location.href="/Catalog/Online-Catalog-Category/15523/Patient-Lift"; 
         break; 

         case "wheelchair-lifts": 
         window.location.href="/Catalog/Online-Catalog-Category/15525/Wheelchair--Scooter-Lifts"; 
         break; 

         default: 
         window.location.href="/"; // if no selection matches then redirected to home page 
         break; 
        }// end of switch 
       } 

      } else { 
       $('.k-invalid:first').focus(); 

       $('.k-invalid').blur(function() { if (this.checkValidity()) { $('.k-invalid:first').focus(); } }); 
      } 
     } else { 
      $(this).closest("form").submit(); 
     } 

    }); 
}); 

ответ

0

Подача формы и перенаправление страницы сталкиваются, потому что на базовой веб-странице может произойти только одна из них. Когда форма отправляется, она отправляет данные формы с помощью желаемого метода на сервер - обычно GET или POST.

И наоборот, когда этот оператор переключения перенаправления запускается, он сообщает браузеру изменить URL-адрес страницы.

Оба эти события инициируют изменение страницы в браузере, но только один действительно может произойти.

Что вам больше всего подходит, чтобы отправить данные формы через запрос AJAX, а затем по завершении вызвать код перенаправления.

Как вы уже используете jQuery, проверьте post method here.

1

Для этого не следует использовать .submit(). Так как вы используете JQuery, вы должны использовать запрос AJAX, отформатированный что-то вроде этого:

$("#submitBtn").click(function (event) { 
    $.ajax({ 
     url : "/your/url", // Whatever URL you're submitting to goes here 
     type : "post", 
     data : yourData, // Whatever data you're sending goes here 
     success : function(data) { 
      // Whatever you want to do on success goes here 
     } 
    }); 
}); 

Вы сделать переключатель в URL части функции запроса AJAX выполняет на успех.

+0

Хммм, похоже, не работает с .NET. Я думаю, что единственный способ сделать это - создать скрытое поле, которое сохраняет значение, а затем перенаправляет на submit. – jlg

+0

Не могли бы вы обновить свое сообщение, чтобы показать, что вы сейчас используете? Я не думаю, что хранение чего-либо в скрытом поле будет работать, потому что когда вы выполняете свой '.submit()', это приводит к перегрузке всей страницы. Любое скрытое поле в конечном итоге будет сбрасываться вместе с остальной частью страницы. –