如何使用cherrypy进行异步ajax调用?

1 投票
2 回答
3799 浏览
提问于 2025-04-15 17:42

我正在使用cherrypy的独立服务器(cherrypy.quickstart())和sqlite3作为数据库。

我想知道在使用cherrypy的情况下,如何通过ajax/jquery进行异步调用来访问数据库?

2 个回答

9

如果你在使用 CherryPy 3.2.0-rc1 版本,那么你可以使用两个装饰器 @json_in@json_out详细信息在这里)。

这样的话:

@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 手动设置 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 格式。

2

就像你使用其他网络服务器一样,你需要让你的JavaScript代码去调用一个网址,这个网址会被服务器上的应用程序处理。

撰写回答