Попытка Войти через AJAX Asp.net - MVC 3 - Не работает - PullRequest
0 голосов
/ 04 сентября 2011

Я пытался войти в систему через AJAX, но почему-то он не работает.

мое действие контроллера

       public string CheckLogin(Users checkuser)
       {
            if (db.CheckUserLoginDetails(checkuser.Email, checkuser.Password))
            {
                return "Login Successful:" + checkuser.Email;
            }
            else
            {
                return "Login UnSuccessful";
            }
        }

мой код представления AJAX

        $(':submit').click(function (e) {
        var username = $('#username').val();
        var password = $('#password').val();
        var postdata =
        {
            'Email': username,
            'Password': password
        };
        $.post({
            url: 'http://localhost:7651/Home/CheckLogin',
            data: postdata,
            success: function (msg) {
                $('#Result').html(msg);
            }
        });
    });

я не знаю, что не так в коде ... но кое-что, как вообще не вызывать действия контроллера ...

  1. да, я работаю на localhost
  2. Действие CheckLogin: i Home Controller
  3. Маршруты не определены ...
  4. попробует взглянуть на сетевую панель ... не имею представления о том,
  5. ПОЛЬЗОВАТЕЛИ Модель

        [Key]
        public virtual int UserID { get; set; }
    
        [Required(ErrorMessage="Required")]
        public virtual string FirstName { get; set; }
    
        [Required(ErrorMessage = "Required")]
        public virtual string LastName { get; set; }
    
        [Required(ErrorMessage = "Required")]
        [DataType(DataType.EmailAddress)]
        public virtual string Email { get; set; }
    
        [Required(ErrorMessage = "Required")]
        [DataType(DataType.Password)]
        public virtual string Password { get; set; }
    
        [DataType(DataType.Date)]
        public virtual DateTime JoiningDate { get; set; }
    
  6. Я пробовал точки останова, но вызовы не выполняются, и точки останова никогда не срабатывают ...

  7. Результат DIV завершается в DOM.. в индексном представлении / в HTML.BeginForm ()
  8. не знаю, как добавить ошибку в $ .AJAX

Спасибо за весь контрольный список, хотя .... пожалуйста, помогите

вот вид ...

@model Temp1.Models.Users

@{
    ViewBag.Title = "Index";
}

<script src="@Url.Content("~/Scripts/jquery-1.5.1.js") type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.5.1-vsdoc.js") type="text/javascript"></script>


<h2>Login</h2>

@using (Html.BeginForm("CheckLogin", "Home"))
{ 
    @*<p>
        <input type="text" id="username" value="" />
    </p>

    <p>
        <input type="password" id="password" value="" />
    </p>
    *@

    @Html.TextBoxFor(model => model.Email)
    @Html.PasswordFor(model => model.Password)

    <p>
        <input type="button" value="Login" id="btnLogin" />
    </p>


    <div id="Result">

    </div>


}


<script type="text/javascript">

    $('#btnLogin').click(function (e) {
        var postdata =
        {
            "Email": "temp@temp.com",
            "Password": "temp123"
        };

        $.ajax({
            url: '@Url.Action("CheckLogin","Home")',
            data: postdata,
            success: function (msg) {
                $('#Result').html(msg);
            },
            error: function (data) {
                $('#Result').html(msg);
            }

        });

    });

</script>

Ответы [ 3 ]

1 голос
/ 04 сентября 2011

Ваш URL для отправки в ajax должен выглядеть следующим образом: / controler / action. Лучше всего использовать Url.Action("actionName","ControlerName"), если нет, вам придется менять jQuery при развертывании в другом месте.

 $.post({
        url: '@Url.Action("CheckLogin","Home")'
        data: postdata,
        success: function (msg) {
            $('#Result').html(msg);
        }
    });

если это не работает, попробуйте изменить свое действие следующим образом,

 public string CheckLogin( string Email, string Password){

}

и измените свои postData,

 var postdata =
    {
        Email: username,
        Password: password
    };
0 голосов
/ 04 сентября 2011

Действие вашего контроллера возвращает строку, а не ActionResult, которая в этом случае будет ContentResult.

Попробуйте:


public ContentResult CheckLogin(Users checkuser)
   {
        if (db.CheckUserLoginDetails(checkuser.Email, checkuser.Password))
        {
            return Content("Login Successful:" + checkuser.Email);
        }
        else
        {
            return Content("Login UnSuccessful");
        }
    }

0 голосов
/ 04 сентября 2011

Ваш пост оставляет мне больше вопросов, чем ответов.Я бы потратил некоторое время на отладку ...

  1. Ваш веб-сайт работает на порту 7651?
  2. есть CheckLogin в вашем домашнем контроллере?
  3. Являются ли ваши маршруты маршрутами по умолчанию или как выглядит ваше отображение?
  4. если вы используете сетевую панель в FireBug, вы видите запрос?Каков результат звонка?
  5. Как выглядит модель «Пользователи» (может быть ошибка привязки)?
  6. Установили ли вы точку останова в методе OnException на вашем контроллере?
  7. Существует ли #Result в вашем DOM (попробуйте предупредить в функции успеха)?
  8. вы пытались добавить свойство "error" к вашему вызову ajax и опросить проблему?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...