开发者

jQuery Handling JSON responses

I have the following from the server response:

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

But this errors?

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

I get 开发者_如何转开发the following error: Uncaught TypeError: Cannot read property 'valid_emails' of null


As Jason and Jonathon mentioned, you should not manually deserialize the JSON. Depending on what version of jQuery you're using, jQuery will automatically deserialize JSON based on the response's content-type header. So, you're probably trying to $.parseJSON() something that's already an object, not a JSON string.

To be sure that jQuery does this automatic deserialization for you, add a dataType parameter to the $.ajax() call:

$.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);
  }
});


You may not have to parse that JSON, as it is already a JSON object. try doing

var emails = e.valid_emails;

If this still does not work, include dataType: 'json' in your .ajax() declaration.


If your server responds with the JSON then you should have to run jQuery.parseJSON(e);. The e parameter might already be the about so try this for your success handler:

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


Just try including

dataType: 'json',
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜