Frappe Ajax Call

In Frappe Framework, you can manage ajax calls via The works in asynchronous manner ie. send requests and handle response via callback mechanism. Structure{
    method: "",
    type: "POST",
    args: {},
    success: function(r) {},
    error: function(r) {},
    always: function(r) {},
    btn: opts.btn,
    freeze: false,
    freeze_message: "",
    async: true,
    url: "" || frappe.request.url,

Parameter description

  • method: dotted path to a whitelisted backend method
  • type: String parameter, http request type "GET", "POST", "PUT", "DELETE". Default set to "POST".
  • args: associative array, arguments that will pass with request.
  • success: Function parameter, code snippet, will after successful execution of request
  • error: Function parameter, code snippet, will execute after request failure
  • always: Function parameter, code snipper, will execute in either case
  • btn: Object parameter, triggering object
  • freeze: Boolean parameter, if set freeze the instance until it receives response
  • freeze_message: String parameter, message will populate to screen while screen is in freeze state.
  • async: Boolean parameter, default set to true. So each is asynchronous. To make call synchronous set parameter value as false
  • url: String parameter, location from where hitting the request

How to use ?

Calling standard API{
    method: 'frappe.client.get_value',
    args: {
        'doctype': 'Item',
        'filters': {'name': item_code},
        'fieldname': [
    callback: function(r) {
        if (!r.exc) {
            // code snippet
  • Param description:

    • doctype: name of doctype for which you want to pull information
    • filters: condition specifier
    • fieldname: you can specify fields in array that you want back in response

Calling whitelisted methods

  • On the client side we specify the server side method to be called. This is a dotted path through the python modules on the server side, where the last part is the method name.{
        method: "frappe.core.doctype.user.user.get_all_roles", //dotted path to server method
        callback: function(r) {
            // code snippet
  • The above request calls the server-side method get_all_roles, located in the file $MY_BENCH/apps/frappe/frappe/core/doctype/user/

    def get_all_roles():
        // business logic
        return value

    Note: any server side method that should be accessed via needs to be whitelisted, by using the decorator @frappe.whitelist().

On this page