Как отправить текстовое значение на мой контроллер с помощью asp.net Mvc

jquery ajax asp.net-mvc

783 просмотра

5 ответа

98 Репутация автора

я новичок в asp MVC, поэтому я попытаюсь создать форму входа с помощью ajax, поэтому я пишу jsonresult, чтобы проверить имя пользователя и пароль в контроллере, и я вызываю его в ajax, но он не работает, когда я пишу правильное имя пользователя и пароль. в лог логин подано вот мой код контроллера

public ActionResult login()
{
    return View();
}


[HttpPost]

public JsonResult ValidateUser(string username,string password)
{
    using(var contxt=new EnglisCenterEntities())
    {
        var data = from a in contxt.Employee
                   where a.Username == username && a.Passwords == password
                   select a;
        if(data.Count()>0)
        {
            return Json(new { Success = true }, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(new { Success = false }, JsonRequestBehavior.AllowGet);
        }
    }
}

и это мой взгляд и код AJAX

<div class="container">
  <div class="row">
<div class="col-md-6 col-md-offset-3 alert alert-warning">
    <h2 class="text-center">Login</h2>
    <div class="row">
        <div class="col-md-12">
            <div class="form-group" id="log">
                <div class="input-group">
                    <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                    <input type="text" id="username" class="form-control" placeholder="Username">
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <div class="form-group">
                <div class="input-group">
                    <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
                    <input type="password" class="form-control" id="password" placeholder="Password">
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <div class="form-group">
                <button class="btn btn-warning form-control" type="submit" id="savedata"><i class="glyphicon glyphicon-log-in"></i>&nbsp;Login</button>
            </div>

        </div>
    </div>
</div>

          <script>
               $(document).ready(function () {
                   $('#log').submit(function (e) {
                    e.preventDefault();
                       var data = {
                               username: function () { return $("#username").val(); },
                               password: function () { return $("#password").val(); }
                           };
                       $.ajax({
                           url: "/Account/ValidateUser",
                           type: "Post",
                           data:data,
                           dataType: "json",

                           success: function (response) {
                               if (response.Success) {
                                   $.get("@Url.Action("Index", "Home")", function (data) {
                                       $('.container').html(data);
                                   });

                               }
                               else
                                   window.location.href = "@Url.Action("Login", "Account")";
                           },
                           error: function () {
                               console.log('Login Fail!!!');
                           }
                       });
                   });
               });
     </script>

Так почему же код Ajax не проверяет имя пользователя и пароль?

Автор: Mahmoud Samy Источник Размещён: 31.03.2016 07:11

Ответы (5)


0 плюса

660 Репутация автора

Вы должны использовать

  event.preventDefault(); on your submit button click 

$('#some-form').submit(function(e) {
  e.preventDefault();   

//Rest of your code here  
}
Автор: REDEVI_ Размещён: 31.03.2016 07:15

0 плюса

11602 Репутация автора

Решение

Я вижу 2 ошибки в вашем коде:

var data = {
    username: function() { return $("#username").val(); },
    password: function() { return $("#password").val(); }
};

Это поможет вам получить фактические значения ваших входов.

И не строковый объект, просто передать его:

$.ajax({
    //...
    data: data,
    //...    
});
Автор: teo van kot Размещён: 31.03.2016 07:17

0 плюса

1 Репутация автора

Если вы хотите передать значение модели в контроллер, значит, вы можете присвоить значение в переменную и опубликовать эту переменную. Но здесь вы получаете два параметра в контроллере. Таким образом, вы передаете два параметра, как этот, а также меняете тип кнопки на кнопку:

 <script>
           $(document).ready(function () {
               $('#savedata').click(function () {
                   $.ajax({
                       url: "/Account/ValidateUser",
                       type: "Post",
                       data:{"username": $("#username").val(),
                       "password": $("#password").val()
                   };,
                       dataType: "json",
                       contentType: "application/json",
                       success: function (response) {
                           if (response.Success) {
                               $.get("@Url.Action("Index", "Home")", function (data) {
                                   $('.container').html(data);
                               });

                           }
                           else
                               window.location.href = "@Url.Action("Login", "Account")";
                       },
                       error: function () {
                           console.log('Login Fail!!!');
                       }
                   });
               });
           });
 </script>
Автор: Eraiarasu Размещён: 31.03.2016 07:22

0 плюса

98 Репутация автора

Ребята, спасибо за ваши ответы и вашу помощь, это работает, это мой код

 <script>
   $(document).ready(function () {

               $('#savedata').click(function (e) {
                           e.preventDefault();
                           var data = {
                               username: function () { return $("#username").val(); },
                               password: function () { return $("#password").val(); }
                           };
                           $.ajax({
                               url: "/Account/validateuser",
                               type: "POST",
                               data: data,
                               dataType: "json",

                               success: function (response) {
                                   if (response.Success) {
                                       $.get("@Url.Action("Index", "Home")", function (data) {
                                           $('.container').html(data);
                                       });

                                   }
                                   else
                                       window.location.href = "@Url.Action("Login", "Account")";
                               },
                               error: function () {
                                   console.log('Login Fail!!!');
                               }
                           });
                       });
                   });

Автор: Mahmoud Samy Размещён: 31.03.2016 07:46

0 плюса

31 Репутация автора

Может быть, вы можете изменить JQuery ajax на JQuery.get ()

$.get('/Account/ValidateUser', { username: "xyx", password: "xyz"})
                    .success(function (response) {
                       if (response.Success) {
                               $.get("@Url.Action("Index", "Home")", function (data) {
                                   $('.container').html(data);
                               });
                           }
                           else
                               window.location.href = "@Url.Action("Login", "Account")";
                    })
                    .fail(function () {
                      console.log('Login Fail!!!');
                    });
Автор: K. Ozcelik Размещён: 31.03.2016 07:49
Вопросы из категории :
32x32