Frappe Framework
Appel AJAX Frappe
frappe.call parle au serveur sans bloquer la page. La méthode Python doit être en liste blanche, sauf appel d’une API standard.
À quoi sert frappe.call
frappe.call gère les appels AJAX. Il est asynchrone : la requête part, la réponse revient par un rappel. Le détail des appels serveur est aussi dans Appels serveur (AJAX).
Paramètres
| Paramètre | Rôle |
|---|---|
method | Chemin pointé d’une méthode serveur en liste blanche |
type | GET, POST, PUT ou DELETE. Défaut : POST. |
args | Arguments envoyés avec la requête |
success | Après une exécution réussie |
error | Après un échec |
always | Dans les deux cas |
btn | Objet qui a déclenché l’appel |
freeze | Si vrai, fige l’écran jusqu’à la réponse |
freeze_message | Texte affiché pendant ce gel |
async | Vrai par défaut. false rend l’appel synchrone. |
url | Adresse de la requête, ou frappe.request.url |
API standard
L’exemple appelle frappe.client.get_value sur Item, avec un filtre name égal à item_code, et demande item_name, web_long_description, description, image et thumbnail. Le rappel s’appelle ici callback, et ne poursuit que si r.exc est absent. doctype est le DocType, filters la condition, fieldname les champs attendus, en tableau.
Méthode de l’application
Le chemin pointe vers les modules Python. Le dernier segment est le nom de la méthode. L’exemple frappe.core.doctype.user.user.get_all_roles vit dans user.py du DocType User. La fonction porte @frappe.whitelist().
À retenir
Toute méthode serveur appelée par frappe.call doit être en liste blanche avec @frappe.whitelist().
Point d’attention
La structure générale nomme le rappel success, l’exemple d’API standard utilise callback. async: false est le seul moyen indiqué pour un appel synchrone.
