2010-01-06 6 views

Répondre

2

De la même manière que vous le feriez en utilisant un autre serveur Web - en obtenant votre javascript pour appeler une URL qui est gérée par l'application côté serveur.

+1

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

9

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.

+0

Qu'en est-il des importations? 'à partir des outils d'importation cherrypi'? – franzlorenzon