2013-11-26 4 views
3

Я пытаюсь выполнить мой запрос через ajax.Функция успеха Ajax возвращает пустые данные

Когда пользователь аутентифицирован он идет к другому URL на AJAX функции успеха -

success:function(data,result) 
{ 
window.location.url='@Url.Action("Home","Index"); 
} 

И мой контроллер IS-

public void _LoginPartial(LoginModel login) { 
      try { 

       var system = (from u in db.RegisterLedgers 
           where u.EmailID == login.EmailID && u.RegisteredPassword == login.PaSsWoRd 
           select u).FirstOrDefault(); 
       if (system != null) { 

        Session["LoggedInUser"] = system; 
        FormsAuthentication.SetAuthCookie(system.RegisteredName, false); 
       } 
      } 
      catch (Exception ex) { 
       ModelState.AddModelError("", ex); 
      } 
     } 

Ajax запрос

это-
<script type="text/javascript"> 
    $(function() { 
     $('#Login-button').click(function() { 
      $.ajax({ 
       url: '/loginledger/_loginpartial/', 
       data: $('#form-loginpartial').serialize(), 
       type: 'post', 
       success: function (data, result) { 
        alert(result); 
        alert(data); 
       }, 
       error: function() { 
        alert("Form couldn't be submitted"); 
       } 

      }); 

     }); 

    }); 

</script> 

Это показывает, что запрос ajax успешный, но данные поступают em принадлежащий частному лицу Я проверил этот запрос на стороне сервера, и он извлекает запись из базы данных.

Почему я получаю пустой результат в функции успеха ajax? Что я сделал здесь неправильно?

ответ

4

Что я здесь сделал неправильно?

Ваше действие контроллера, кажется, ничего не возвращает. Это всего лишь void. В действиях ASP.NET MVC Controller должны возвращать ActionResults.

Например, вы могли бы JsonResult

public ActionResult _LoginPartial(LoginModel login) 
{ 
    try 
    { 
     var system = 
      (from u in db.RegisterLedgers 
      where u.EmailID == login.EmailID && u.RegisteredPassword == login.PaSsWoRd 
      select u).FirstOrDefault(); 

     if (system != null) 
     { 
      Session["LoggedInUser"] = system; 
      FormsAuthentication.SetAuthCookie(system.RegisteredName, false); 
      return Json(new { success = true; }); 
     } 
    } 
    catch (Exception ex) 
    { 
     ModelState.AddModelError("", ex); 
    } 

    return Json(new { success = false; }); 
} 

, которые вы могли бы проверить в вашем успехе обратного вызова AJAX:

success: function (data) { 
    alert(data.success); 
} 
3

_LoginPartial Ваше действие не имеет возвращаемого типа (void). Вы должны установить тип возврата для действия _LoginPartial, а затем вернуть что-то. например return View() или return Json().

Пересмотренный подпись:

public ActionResult _LoginPartial(LoginModel login) 
{ 
    // also a good idea to check `ModelState.IsValid` 
    if (ModelState.IsValid) 
    { 
     // Go ahead and log them in if everything checks out, then return 
     // your successful response 
     return Json(new { status = 200, msg = "OK" }); 
    } 
    // Erroneous response 
    return Json(new { status = 401, msg = "Unauthorized" }); 
} 

Просто приведенные примеры; Очевидно, реализуйте его по своему усмотрению.

0

Ваше действие должно возвращать что-то (рекомендуется JsonResult). Для этого замените возвращаемый тип (void) на ActionResult или JsonResult и в конце функции верните Json() примерно так:

public ActionResult_LoginPartial(LoginModel login) { 
     try { 

      var system = (from u in db.RegisterLedgers 
          where u.EmailID == login.EmailID && u.RegisteredPassword == login.PaSsWoRd 
          select u).FirstOrDefault(); 
      if (system != null) { 

       Session["LoggedInUser"] = system; 
       FormsAuthentication.SetAuthCookie(system.RegisteredName, false); 

      return Json(data = result, message = "suceed" JsonRequestBehavior.AllowGet); 
      } 

      return Json(data=null, message = "system is null" JsonRequestBehavior.AllowGet); 
     } 
     catch (Exception ex) { 
      ModelState.AddModelError("", ex); 
      return Json(data=null, message = "exception" JsonRequestBehavior.AllowGet); 
     } 
    } 
Смежные вопросы