Как сделать асинхронные вызовы ajax с использованием cherrypy? - PullRequest
1 голос
/ 06 января 2010

Я использую автономный сервер cherrypy (cherrypy.quickstart ()) и sqlite3 для базы данных.

Мне было интересно, как можно было бы выполнять ajax / jquery асинхронные вызовы базы данных при использовании cherrypy?

Ответы [ 2 ]

9 голосов
/ 11 января 2010

Если вы используете 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 голосов
/ 06 января 2010

Точно так же, как вы делали бы их, используя любой другой веб-сервер - получая ваш javascript для вызова URL, который обрабатывается серверным приложением.

...