Bottle und AJAX

Django, Flask, Bottle, WSGI, CGI…
Antworten
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

Hallo,

ich baue gerade an meiner ersten Python Webanwendung. Jetzt stehe ich an dem Punkt wo ich gerne AJAX benutzen würde um das zu tun:

http://www.easy-coding.de/wiki/html-aja ... gkeit.html

Zur Demo

Leider stelle ich fest, dass ich nicht verstehe wie ich da mit Bottle/python vorgehen muss.

Toll wäre, wenn mir jemand Beispielcode zur Verfügung stellen könnte, aus dem ersichtlich wird, wie man Bottle mit AJAX benutzt.


Gruß

Herr Lehmann
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Im Prinzip ueberlegst du dir welche Informationen du haben willst und machst einfache eine Route ueber die du die per JSON abfragen kannst, bedenke dabei dass du keine Listen direkt zurueckgeben darfst da es dann valides Javascript ist und man den Array Konstruktor ueberschreiben kann wodurch deine API anfaellig fuer XSS Attacken wird.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

soll beides von Bottle erlegit werden?

Dann brauchst du zwei Route: Eine, die den HTML-Code liefert (entweder per Template oder per static_file) und eine, die JSON liefert. Wie das geht steht in der Bottle-Doku.

Gruß, noisefloor
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

Ich habe mittlerweile selbst noch ein bißchen rumprobiert und auch nach Beispielen im Internet gesucht. Das einzige was ich gefunden habe, war dieses:

Code: Alles auswählen

# coding:utf8

from bottle import route, run, request

@route('/')
def main():
    return """
    <html>
    <script type="text/javascript"
        src="http://code.jquery.com/jquery-1.4.2.min.js" />
    <script type="text/javascript" language="javascript">
        function sendjs() {
            $.post('/json', 
                { a:5, b:'test' }, 
                function(data) {
                    alert('a=' + data.a + ', b=' + data.b);
                },
                'json'
            );
        };
    </script>
    <body>
    <input OnClick="sendjs()" type="submit" >
    </body></html>
    """

@route('/json', method = "POST")
def myGetJson():
    a = request.POST['a']
    b = request.POST['b']
    return {'a':b, 'b':a }

run(host='localhost', port=8090)

Funktioniert nur nicht.

Ich würde mich sehr freuen, wenn sich jemand die Mühe macht mein Beispiel aus dem StartPosting nach Python zu übertragen, falls es nicht zuviel mühe macht.

Danke

Gruß

Herr Lehmann
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Schau dir bitte noch mal den Tag an, wie du jQuery einbindest. Das ist nicht ganz richtig.
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

Ich habs mal anders eingebunden aber es geht trotzdem nicht. Komme mit javascript und Bottle nicht so wirklich weiter. Es wäre klasse wenn es dazu ein konkretes funktionierendes beispiel gäbe.

Gruß
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Wie hast du es denn 'anders' eingebunden?
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

Ich hab den Fehler gefunden und ein einfaches Jquery Beispiel funktioniert jetzt auch ganz gut. Jetzt kommt der Ajax Part... Mal schauen ob ich es heute hinbekomme.
djangothoto
User
Beiträge: 24
Registriert: Freitag 10. September 2010, 10:12

@ Herr Lehman,
schau dir doch mal http://www.python-forum.de/viewtopic.php?f=7&t=24698 an!
Hab denke ich, so ein ähnliches problem gehabt wie du!

vllt. hilft dir dass weiter falls du evtl. fragen hast pn!

mfg thoto
Nobody is perfect!
Antworten