Как обрабатывать JSON-данные `@ user.errors`, когда HTTP-запрос AJAX возвращает` error`? - PullRequest
0 голосов
/ 22 августа 2011

Я использую Ruby on Rails v3.0.9 и jQuery v1.6.1.Я хотел бы обработать (используя jQuery) данные ответа JSON, когда HTTP-запрос AJAX возвращает error (см. Код ниже для получения дополнительной информации), чтобы отобразить @user.errors сообщения.То есть ...

... в контроллере у меня есть:

render :json   => @user.errors,
       :status => 400

... в файле просмотра у меня:

$jQ.ajax({
  type:     '...',
  url:      '...',
  dataType: 'json',
  data:     '...',
  error:    function(jqXHR, textStatus, errorThrown) {

    // Here is where I would like to handle the above mentioned `@user.errors` 
    // array (that is related to the "Ruby on Rails Way" of handling errors).
    //
    // I tried to use 'alert(jqXHR.base);' but the `@user.errors` array is always
    // returned as a string.
    alert(...)

  },
  success:  function(data, textStatus, jqXHR) {
    ...
  }
});

Есть способ изменить вышеуказанный код, чтобы использовать что-то вроде следующего для отображения ошибок?

# Supposing that'@user.errors' is '{"base":["already exist"]}'
alert(jqXHR.base);

Примечание: В двух словах я хотел бы обрабатывать данные как сделанныекогда я получаю успешные данные HTTP-запроса AJAX (function(data, textStatus, jqXHR) позволяет мне использовать JSON-анализ data, например, так: alert(jqXHR.base);).

1 Ответ

0 голосов
/ 22 августа 2011

Это довольно просто. Вам просто нужно json-декодировать ответ, возвращаемый сервером. Просто используйте http://api.jquery.com/jQuery.parseJSON/, чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...