2013-09-05 200 views
4

我有一個Web形式發送AJAX post請求到龍捲風包含服務器形式的數據,但由使用龍捲風

self.write(message) 

的響應發送響應到AJAX是隻是被顯示在瀏覽器而不是JS處理它。我怎樣才能糾正這一點?

class NewHandler(BaseHandler): 
@tornado.web.authenticated 
def post(self): 
    message = { 
      "id": str(uuid.uuid4()), 
      "from": self.current_user["name"], 
      "body": self.get_argument("body"), 
      } 

    message["html"] = tornado.escape.to_basestring(self.render_string("message.html", message=message)) 
    self.write(message) 
    messages.new([message]) 

JS代碼:

$(document).ready(function() { 
document.session = $('#session').val(); 


$('#messageform').submit(function(event) { 
    var formdata = $('#messageform').formData(); 
    var button = $('#messageform').find("input[type=submit]"); 
    button.prop("disabled", true); 
    jQuery.ajax({ 
     url: '/new', 
     type: 'POST', 
     data: formdata, 
     success: function(response){ 
      messageBox.show(eval("("+response+")"); 
      button.prop("disabled", false); 
     } 
    }); 
}; 

var messageBox = { 
show: function(message){ 
    var content = $(message.html); 

    $("#inbox").append(content); 

} 
+0

嘗試調用event.preventDefault();在var formdata = $('#messageform')之前。formData(); – Ullauri

回答

0

嘗試只是self.write後拋出StopIteration異常()方法:

self.write(somedata) 
raise StopIteration 
+0

導致500:內部服務器錯誤 – Saurabh7