最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - jQuery Handling JSON responses - Stack Overflow

programmeradmin8浏览0评论

I have the following from the server response:

{"invalid_emails":["adsasdasd"],"result":"success","valid_emails":["[email protected]"]}

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

I have the following from the server response:

{"invalid_emails":["adsasdasd"],"result":"success","valid_emails":["[email protected]"]}

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

Share Improve this question asked Dec 17, 2010 at 0:57 AnApprenticeAnApprentice 111k202 gold badges637 silver badges1k bronze badges 1
  • Are you able to read other properties ? – Ratna Dinakar Commented Dec 17, 2010 at 1:00
Add a ment  | 

4 Answers 4

Reset to default 6

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)

  1. 暂无评论