jQuery处理JSON响应

时间:2010-12-17 00:57:13

标签: javascript jquery json

我从服务器响应中得到以下信息:

{"invalid_emails":["adsasdasd"],"result":"success","valid_emails":["jobs@apple.com"]}

但是这个错误?

            $.ajax({
                type: 'POST',
                url: '/users/invitation',
                data: $('#user_invitation_new').serialize(),
                success: function(e) {
                    jsonObject = jQuery.parseJSON(e);
                    jsonObject.valid_emails
                    jsonObject.invalid_emails

我收到以下错误:未捕获TypeError:无法读取属性'valid_emails'为null

4 个答案:

答案 0 :(得分:6)

正如Jason和Jonathon所提到的,你不应该手动反序列化JSON。根据您使用的jQuery版本,jQuery将根据响应的content-type标头自动反序列化JSON。所以,你可能正在尝试$ .parseJSON()那些已经是对象的东西,而不是JSON字符串。

为了确保jQuery为您执行此自动反序列化,请在$ .ajax()调用中添加dataType参数:

$.ajax({
  type: 'POST',
  dataType: 'json',
  url: '/users/invitation',
  data: $('#user_invitation_new').serialize(),
  success: function(response) {
    console.log(response.valid_emails);
    console.log(response.invalid_emails);
  }
});

答案 1 :(得分:2)

您可能不必解析该JSON,因为它已经是JSON对象。尝试做

var emails = e.valid_emails;

如果仍然无效,请在dataType: 'json'声明中加入.ajax()

答案 2 :(得分:0)

如果您的服务器使用JSON响应,那么您必须运行jQuery.parseJSON(e);e参数可能已经是约束,因此请尝试使用此成功处理程序:

success: function(e)
    var valEmails = e.valid_emails,
        invalEmails = e.invalid_emails;
};

答案 3 :(得分:0)

试试包括

dataType: 'json',