Si vous utilisez CherryPy 3.2.0-rc1 vous pouvez alors utiliser les décorateurs @json_in
et @json_out
(see here).
Ainsi:
@cherrypy.expose
@tools.json_in(on = True)
@tools.json_out(on = True)
def json_test(self):
return { 'message':'Hello, world!' }
retournera JSON au navigateur, par exemple
$(document).ready(function() {
$.getJSON('/json_test', function(data) {
alert(data.message);
}
}
Vous devez vous rappeler que CherryPy attend les messages JSON avoir un type de contenu de application/json
, de le faire avec jQuery, utilisez $.ajax
et manaully mis contentType
ou vous pouvez utiliser la fonction de commodité suivante:
$.postJSON = function(url, data, callback) {
$.ajaxSetup({ scriptCharset:"utf-8",
contentType:"application/json; charset=utf-8" });
$.post(url, $.toJSON(data), callback, "json");
}
Cette fonction utilise le plug-in jquery-json, mais vous pouvez utiliser une méthode différente pour convertir en JSON.
Yup. CherryPy se fout de la façon dont vous l'appelez tant que c'est HTTP. Du côté serveur, AJAX ressemble à n'importe quelle autre requête. Vous devrez peut-être définir cherrypy.response.headers ['Content-Type'] sur 'application/json' ou quoi que vous retourniez ... – fumanchu