Получите сообщение play.mvc.results.Error во время Ajax, используя responseText - PullRequest
2 голосов
/ 27 июля 2011

скажем, я играю!Пост ajax с использованием этого кода jquery, мне нужно показать ошибку в окне предупреждения.

$.ajax({
type: "post",
url: "@{removeQuoteToWatch()}",
dataType : "json",
data: {
    'symbol'        : symbol
 },
 error: function(xhr, ajaxOptions, thrownError){ 


            alert(xhr.responseText);
   },
  success: function(data){
            ...
   }
 });

вывод в окне предупреждения следующий:

{
type:   'play.mvc.results.Error',
message: 'Can't find symbol : Watch list is empty'
}

Как я могу тольковосстановить часть сообщения?

я пробовал что-то вроде

error: function(xhr, ajaxOptions, thrownError){ 


            alert(xhr.responseText.message);
        },

, но это не работает

спасибо,

1 Ответ

3 голосов
/ 08 августа 2011

Как вы можете прочитать здесь

http://api.jquery.com/jQuery.ajax/#jqXHR

responseText - это строка;если вы хотите проанализировать его как json, вы можете сделать

var res = $.parseJSON( xhr.responseText );
alert(res.message);

Я лично предпочитаю не выдавать ошибку 500 для логических проблем, а использовать обычные 200 и предоставлять статус возврата и ошибку пользователя вjson.

Ответ, приведенный выше, в основном правильный, НО, если посмотреть на него ближе (и фактически воспроизвести его), то кажется, что вы обнаружили ошибку в игровой среде.Каркас должен возвращать

{"type": "play.mvc.results.Error", "message": "Watchlistempty"}

, в то время как он возвращает:

{type: 'play.mvc.results.Error', сообщение: 'Watch list empty'}

, что недопустимо json.

Я проверил игру!проект маяка и о нем вроде бы не сообщалось раньше.Я создал тикет по адресу:

http://play.lighthouseapp.com/projects/57987-play-framework/tickets/1073-templateserror500json-returns-invalid-json#ticket-1073-2

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