使用responseText在Ajax期间检索play.mvc.results.Error的消息

时间:2011-07-27 02:14:41

标签: jquery ajax playframework

让我说我做一个游戏!使用此jquery代码的ajax帖子,我需要在警告框中显示错误。

$.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 个答案:

答案 0 :(得分:3)

你可以在这里阅读

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

responseText是一个字符串;如果你想以json的形式解析它,你可以做到

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

我个人确实不想为逻辑问题抛出500错误,但使用正常的200 并在json中提供return-status和user-error。

上面的答案基本上是正确的但是看得更近(并且实际上再现它)看起来你在游戏框架中发现了一个错误。框架应该返回

{     “类型”:“play.mvc.results.Error”     “消息”: “Watchlistempty” }

虽然它确实返回:

{type:'play.mvc.results.Error',    消息:'监视列表为空'}

这是无效的json。

我检查过这部剧!灯塔项目,似乎没有报道过。我创建了一张票:

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