2011-12-24 69 views
0

在我的应用程序中,我有一个使用ajax的登录,它返回一个JSON结果。ajax调用内的jQuery JSON

如果是良好的话,它会返回:

{"authenticated":true,"redirect":"/posts/new"}

如果它是一个失败了:

{"authenticated":false,"error":"Username or password is incorrect"}

我想要做的就是在我的AJAX成功回调检查认证是什么,如果是真的,那么做一件事,如果它是假的,那么做另一件事:

success: function (responseHtml) 
{ 
    if(SUCCESS IS TRUE) 
    { 
      window.location.href('REDIRECT'); 
    } 
    else 
    {   
      alert('ERROR MESSAGE'); 
    } 

    console.log(responseHtml); 
} 

任何人都可以帮助我吗?我看过getJSON的东西,但不知道如何在这里使用它。由于

UPDATE:全码

$('form').live('submit', function (event) { 

      var form = $(this); 

      event.preventDefault(); 

      var data = form.serialize(); 

      $('<div id="loading">Loading...</div>').appendTo('#li-submit').hide(); 

      $('#loading').fadeIn(); 

      $.ajax({ 
       type: form.attr('method'), 
       url: form.attr('action'), 
       data: data, 
       success: function (response) 
       { 
        $('#loading').fadeOut(function() { $(this).remove(); }); 

        if(response.authenticated) 
        { 
         window.location.href('url'); 
        } 
        else 
        { 
         alert(response.error); 
        } 
       }, 
       error: function (jqXHR, textStatus, errorThrown) 
       { 
        $('#loading').fadeOut(function() { $(this).remove(); }); 

        alert('Error!'); 
       } 

      }); 

     }); 

回答

2
success: function(response) { 
    if(response.authenticated) { 
     window.location.href('url'); 
    } else { 
     alert('error'); 
    } 
} 

你应该确保你的AJAX配置对象的“的dataType”属性设置为“JSON”或者未设置(它会默认为自动 - 检测)。

+1

在这种情况下,将'success:function(responseHtml)'改为'success:function(response)' – 2011-12-24 00:15:41

+1

哦好点。我重命名了它,因为“responseHtml”不会是HTML,而是JSON。我会更新,谢谢。 – Interrobang 2011-12-24 00:16:32

+0

yep responseHtml没有意义 – 2011-12-24 00:19:28

0
// if response is already json as you said 
success: function (response) { 
    if(response && response.authenticated) { 
     window.location = response.redirect; 
    } else {   
     alert('ERROR MESSAGE'); 
    } 

    console.log(response); 
}