我在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
为空。
如何捕获该错误并重定向到错误页面?
答案 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