我正在使用cherrypy的獨立服務器(cherrypy.quickstart())和sqlite3的數據庫。如何使用cherrypy進行異步ajax調用?
我想知道如何在使用cherrypy時對數據庫執行ajax/jquery異步調用?
我正在使用cherrypy的獨立服務器(cherrypy.quickstart())和sqlite3的數據庫。如何使用cherrypy進行異步ajax調用?
我想知道如何在使用cherrypy時對數據庫執行ajax/jquery異步調用?
與使用任何其他網絡服務器的方式相同 - 通過讓JavaScript調用服務器端應用程序處理的URL。
如果您使用的是CherryPy 3.2.0-rc1,那麼您可以使用修飾器@json_in
和@json_out
(see here)。
因此:
@cherrypy.expose
@tools.json_in(on = True)
@tools.json_out(on = True)
def json_test(self):
return { 'message':'Hello, world!' }
將返回JSON給瀏覽器,例如
$(document).ready(function() {
$.getJSON('/json_test', function(data) {
alert(data.message);
}
}
你需要記住的CherryPy預計JSON職位,有application/json
內容類型,這樣做與jQuery的,要麼使用$.ajax
和manaully設置contentType
或者您可以使用以下便利功能:
$.postJSON = function(url, data, callback) {
$.ajaxSetup({ scriptCharset:"utf-8",
contentType:"application/json; charset=utf-8" });
$.post(url, $.toJSON(data), callback, "json");
}
此功能使用jquery-json插件,但您可以使用其他方法轉換爲JSON。
進口產品如何? '從櫻桃進口工具'? – franzlorenzon 2013-07-12 12:18:13
是。只要它是HTTP,CherryPy不在乎你怎麼稱呼它。從服務器端來看,AJAX看起來就像其他任何請求一樣。您可能必須將cherrypy.response.headers ['Content-Type']設置爲'application/json'或任何您正在返回的內容... – fumanchu 2010-01-06 19:30:43