Tornado没有向客户发送Ajax响应

时间:2014-11-04 14:52:34

标签: javascript jquery python tornado

在表单提交后,Tornado服务器会执行一些检查并将响应发送回客户端,该响应应作为alert显示在当前页面中。

而是使用Json响应呈现空白的html页面,而不是在提交表单的当前页面上呈现alert

一旦提交,表单将通过post发送到/dh (DataHandler)

这是Jquery:

$.post("/dh",function(data,status){
    alert("Data: " + data + "\nStatus: " + status);
    },"json");

龙卷风代码:

class DataHandler(BaseHandler): 
    def post(self):

        # Checks are done with form data received

        dupInfo={
            'tel' : duptel,
            'name' : dupName
             }

        self.write(json.dumps(dupInfo, default=json_util.default))
        self.finish()

那么如何将这个json返回到当前页面呢?

2 个答案:

答案 0 :(得分:3)

"警告"声明,添加return false;。这会禁用浏览器对POST事件的默认处理。浏览器的默认行为是导航到新网址,您希望阻止它。

答案 1 :(得分:0)

为您的表单提供ID并在提交后停止默认重定向:

$("#yourForm").submit(function (event) {
    event.preventDefault();

    jQuery.ajax({
        url: "/dh",
        data: {
        // whatever data you are passing to handler
        },
        dataType: "json",
        type: "POST"
    }).done(function (data, textStatus, jqXHR) {
       // call was successful
       // access response data
       alert(data['tel'])
       alert(data['name'])
    }).fail(function (jqXHR, textStatus, errorThrown) {
       // call error
       // access response data
       var data = jqXHR.responseJSON;
       alert(data['tel'])
       alert(data['name'])
    });
});

根据你的处理程序,你应该在完成回调而不是失败的回调中结束。