2013-04-29 4 views
0

Я пытаюсь создать небольшой экран входа в систему. Я не использую API. Как я установил экран входа в систему, следуйтеОтменить вызов контроллера через jQuery

  1. Пользователь вводит логин и пароль в VIEW.
  2. Пользователь нажимает кнопку входа в систему.
  3. Я проверяю детали пользователя через AJAX.
  4. На данном этапе, если данные верны, я переношу пользователя на следующую страницу.
  5. Если информация неверна, я просто поставлю сообщение об ошибке.

Вот код JQuery, который у меня есть.

$(document).ready(function() { 
     var returnType; 
     $("#loginButton").click(function() { 
      var loginDetails = { 
       loginName: $("#username").val(), 
       password: $("#password").val() 
      }; 
      $.ajax({ 
       url: '@Url.Action("VerifyLoginDetails", "Home")', 
       type: 'POST', 
       contentType: 'application/json', 
       dataType: 'json', 
       data: JSON.stringify(loginDetails), 
       success: function (data) { 
        if (data.success) { 
         if (data.loginAuthentication == 1) { 
          return true; 
         } 

         if (data.loginAuthentication == -2) { 
          $("#password").attr("style", "display:block;"); 
          alert("incorrect password"); 
          return false; 
         } 

         if (data.loginAuthentication == -1) { 
          $("#username").attr("style", "display:block;"); 
          alert("incorrect un"); 
          return false; 
         } 

        } 
       } 
      }); 
     }); 
    }); 

Насколько мне известно, то, если я вернусь правда, он не должен посылать вызов на контроллер, но по какой-то причине, он до сих пор. Любые предложения о том, как я могу остановить вызов контроллера через jQuery?

+0

Где находится рядом pege код вызова? – Amit

ответ

2

Скорее всего, #loginButton находится в форме, которая отправляется при нажатии кнопки. Вы можете использовать preventDefault(), чтобы остановить это поведение:

$("#loginButton").click(function (e) { 
    e.preventDefault(); 
    ... 
+0

Если это так, вы, вероятно, захотите обработать форму 'submit' вместо кнопки' click' event –

+0

Я попробовал e.preventDefault(). при этом код ведет себя отменяет вызов контроллера в каждом случае. Я хочу отменить его, когда вернусь к false. – Developer

+0

Я хочу поставить полный код для просмотра. как я могу это сделать? – Developer

0

Возвращаемое значение функции успеха не делает ничего, насколько я могу видеть. То, что вы должны делать, это разместить код перенаправления, где у вас есть «return true».

Для этого используйте окно.location.href.

window.location.href = "https://google.com";

+0

Slappy! Как я могу это сделать. Я перехожу к другому виду через контроллер. Как это сделать с помощью JQuery – Developer

+0

Просто установите window.location.href на целевой URL – Slappy

+0

window.location.href = 'http://google.com'; – Slappy

0

Пожалуйста, попробуйте этот код

$(document).ready(function() { 
     var returnType=false; 
     $("#loginButton").click(function() { 
      var loginDetails = { 
       loginName: $("#username").val(), 
       password: $("#password").val() 
      }; 
      $.ajax({ 
       url: '@Url.Action("VerifyLoginDetails", "Home")', 
       type: 'POST', 
       contentType: 'application/json', 
       dataType: 'json', 
       data: JSON.stringify(loginDetails), 
       success: function (data) { 
        if (data.success) { 
         if (data.loginAuthentication == 1) { 
          returnType=true; 
         } 

         if (data.loginAuthentication == -2) { 
          $("#password").attr("style", "display:block;"); 
          alert("incorrect password"); 
          returnType=false; 
         } 

         if (data.loginAuthentication == -1) { 
          $("#username").attr("style", "display:block;"); 
          alert("incorrect un"); 
          returnType=false; 
         } 

        } 
       } 
      }); 
      return returnType; 
     }); 
    }); 
Смежные вопросы