Seite 1 von 1

Bottle und AJAX

Verfasst: Montag 22. November 2010, 18:09
von Herr Lehmann
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

Re: Bottle und AJAX

Verfasst: Montag 22. November 2010, 18:17
von DasIch
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.

Re: Bottle und AJAX

Verfasst: Montag 22. November 2010, 21:44
von noisefloor
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

Re: Bottle und AJAX

Verfasst: Dienstag 23. November 2010, 19:54
von Herr Lehmann
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

Re: Bottle und AJAX

Verfasst: Mittwoch 24. November 2010, 09:30
von lynadge
Schau dir bitte noch mal den Tag an, wie du jQuery einbindest. Das ist nicht ganz richtig.

Re: Bottle und AJAX

Verfasst: Sonntag 28. November 2010, 15:55
von Herr Lehmann
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ß

Re: Bottle und AJAX

Verfasst: Sonntag 28. November 2010, 16:35
von lynadge
Wie hast du es denn 'anders' eingebunden?

Re: Bottle und AJAX

Verfasst: Sonntag 28. November 2010, 16:39
von Herr Lehmann
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.

Re: Bottle und AJAX

Verfasst: Dienstag 30. November 2010, 13:18
von djangothoto
@ 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