Introduction

Installation

Frequently asked questions

Syntax, keywords and built-in functions

Standard distribution

import implementation

Browser interface

Brython-specific built-in modules

Working with Brython

Brython for Firefox OS

Cookbook

 

module browser.ajax

This module allows running Ajax requests. It defines a single function :

ajax()
returns an ajax object

This object has the following attributes and methods :

bind(evt,function)
attaches the function to the event evt. evt is a string that matches the different request states :

  • "uninitialized" : not initialized
  • "loading" : established connection
  • "loaded": received request
  • "interactive": response in progress
  • "complete" : finished

The function takes a single argument, the ajax object.

open(method, url, async)
method is the HTTP method used for the request (usually GET or POST),

url is the url to call,

async is a boolean that indicates whether the call is asynchronous (the script that started the request goes on running without waiting for the response) or not (the script hangs until the response is received).

readyState
an integer representing the request state (cf table below).

readyState request state
0"uninitialized"
1"loading"
2"loaded"
3"interactive"
4"complete"

set_header(name, value)
sets the value of the header name.

set_timeout(duration, function)
if the query did not return response within duration in seconds, it will cancel the query and execute the function. This function cannot have arguments.

send([data])
sends (starts) the request. The optional argument data is ignored if the method is not POST ; it must be a dictionary, or a string representing the url encoding of key-value pairs. If you want to send files, you need to pass a dictionary with one of the keys a File object, e.g. provided you have an input element of type file and id upload_file you could send the user selected file under the key upload by calling send({'upload':doc["upload_file"].elt.files[0]})

status
an integer representing the HTTP status of the request. The most usual are 200 (ok) and 404 (file not found).

text
the server response as a string of characters.

xml
the server response as a DOM object.

Example

We suppose there is a DIV with id result in the HTML page

from browser import document, ajax

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

req = ajax.ajax()
req.bind('complete',on_complete)
# send a POST request to the url
req.open('POST',url,True)
req.set_header('content-type','application/x-www-form-urlencoded')
# send data as a dictionary
req.send({'x':0, 'y':1})

To send data via the GET method, it must be included in the 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()