如何在ember js动作中获得龙卷风错误响应?

时间:2014-04-14 07:47:31

标签: javascript ember.js

我在Ember.js中为Tornado服务器的搜索结果编写了一个搜索操作。现在的问题是,当搜索未找到任何结果时,我使用tornado.web.HTTPError(statuscode)引发错误:

Server.py:
=========
          if not rows:
            raise tornado.web.HTTPError(400) 

我试图像我这样在App.js文件中处理错误:

App.js:
========
      search: function() {
        // the current value of the text field
        var query = this.get('query');
        data = $.ajax({
          dataType: "json",
          url: "/search?query=" + query,
          async: false}).error(function(response) {
                           alert(response.responseText);
          }).responseJSON;

在上面的代码中,当Tornado引发错误时,会执行.error(response),但responseText为空。

如何捕获该错误并重定向到错误页面?

1 个答案:

答案 0 :(得分:2)

问题不是来自EmberJS。它在Ajax Request。您正在请求data-type的JSON,但对于404,您发送的HTML内容(可能就像这个<html><title>400: Bad Request</title><body>400: Bad Request</body></html>)在解析后返回为空。从AJAX Request中删除数据类型为JSON,或者在服务器中编写自己的自定义处理程序,以便在JSON模式下返回404错误。

class MyHandler(tornado.web.RequestHandler):
    def get(self):
        self.clear()
        self.set_status(400)
        self.finish("[]") //some JSON