Introduction

Installation

Questions fréquemment posées

Syntaxe, mots-clés et fonctions intégrées

Distribution standard

Implémentation de import

Interface avec le navigateur

Modules intégrés propres à Brython

Travailler avec Brython

Recettes

 

module browser.ajax

Ce module permet d'exécuter des requêtes Ajax. Il définit une seule fonction :

ajax()
Renvoie un objet ajax

Cet objet possède les attributs et méthodes suivants :

bind(evt,fonction)
Attache la fonction à l'événement evt. evt est une chaine de caractères correspondent aux différents états de la requête :

  • "uninitialized" : non initialisé
  • "loading" : connexion établie
  • "loaded" : requête reçue
  • "interactive" : réponse en cours
  • "complete" : terminé

La fonction prend un seul argument, qui est l'objet ajax

open(methode,url,async)
methode est la méthode HTTP utilisée pour la requête (habituellement GET ou POST).

url est l'url appelée.

async est un booléen qui indique si l'appel est asynchrone (le script qui a effectué la requête continue de s'exécuter sans attendre la réponse à cette requête) ou non (l'exécution du script s'arrête en attendant la réponse).

readyState
un entier représentant l'état d'avancement de la requête, selon le tableau ci-dessous :

readyState événement
0"uninitialized"
1"loading"
2"loaded"
3"interactive"
4"complete"

set_header(nom,valeur)
affecte la valeur valeur à l'entête nom.

set_timeout(duree, fonction)
si la requête n'a pas renvoyé de réponse dans les duree secondes, annule la requête et exécute la fonction. Cette fonction ne prend pas d'argument.

send([data])
lance la requête. L'argument optionnel data n'est pris en charge que si la méthode est POST ; il doit s'agir soit d'un dictionnaire, soit d'une chaine de caractères.

status
un entier représentant le statut HTTP de la requête. Les valeurs les plus courantes sont 200 (ok) et 404 (fichier non trouvé).

text
la réponse du serveur sous forme de chaine de caractères.

xml
la réponse du serveur sous forme d'objet DOM.

Exemple

On suppose qu'il y a un DIV avec l'id "result" dans la page HTML

from browser import document, ajax

def on_complete(req):
    if req.status==200:
        document["result"].html = req.text
    else:
        document["result"].html = "error "+req.text

req = ajax.ajax()
req.bind('complete',on_complete)
# envoie une requête POST à l'url
req.open('POST',url,True)
req.set_header('content-type','application/x-www-form-urlencoded')
# envoie les données sous forme de dictionnaire
req.send({'x':0, 'y':1})

Pour envoyer des données via la méthode GET il faut l'inclure dans la chaine de requête (query string)

qs = "x=0&y=1"
req.open('GET', url+'?'+qs, True)
req.set_header('content-type', 'application/x-www-form-urlencoded')
req.send()