在ajax调用中使用jQuery JSON

时间:2011-12-24 00:06:46

标签: jquery json

在我的应用程序中,我使用ajax登录,返回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的东西,但不知道如何在这里使用它。感谢

更新:完整代码

$('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 个答案:

答案 0 :(得分:2)

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

您应确保将AJAX配置对象的'dataType'属性设置为“json”或未设置(默认为自动检测)。

答案 1 :(得分: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);
}