JQuery Обработка ответов JSON - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть следующее из ответа сервера:

{"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

Я получаю следующую ошибку: Uncaught TypeError: Невозможно прочитать свойство 'valid_emails' с нулевым значением

Ответы [ 4 ]

6 голосов
/ 17 декабря 2010

Как упоминали Джейсон и Джонатон, вам не следует десериализовать JSON вручную. В зависимости от того, какую версию jQuery вы используете, jQuery автоматически десериализует JSON на основе заголовка типа содержимого ответа. Итак, вы, вероятно, пытаетесь $ .parseJSON () что-то, что уже является объектом, а не строкой JSON.

Чтобы убедиться, что jQuery выполняет эту автоматическую десериализацию, добавьте параметр dataType к вызову $ .ajax ():

$.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);
  }
});
2 голосов
/ 17 декабря 2010

Возможно, вам не придется анализировать этот JSON, поскольку это уже объект JSON.попробуйте сделать

var emails = e.valid_emails;

Если это все еще не работает, включите dataType: 'json' в ваше объявление .ajax().

0 голосов
/ 21 мая 2014

Просто попробуйте включить

dataType: 'json',
0 голосов
/ 17 декабря 2010

Если ваш сервер отвечает JSON, вам нужно запустить jQuery.parseJSON(e);. Параметр e может уже иметь значение, поэтому попробуйте это для своего обработчика успеха:

success: function(e)
    var valEmails = e.valid_emails,
        invalEmails = e.invalid_emails;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...