Current Location: Home> Latest Articles> Complete Guide on Handling Ajax Requests via Controllers in Yii Framework

Complete Guide on Handling Ajax Requests via Controllers in Yii Framework

M66 2025-06-03

Complete Guide on Handling Ajax Requests via Controllers in Yii Framework

In the Yii framework, controllers play a critical role in handling various requests, especially when it comes to handling Ajax requests. This article will walk you through the process of using controllers in Yii to handle Ajax requests, providing relevant code examples to help you quickly implement this functionality.

Step 1: Create a Controller Class

First, create a controller class. In Yii, we typically create a custom controller by inheriting from the `yii\web\Controller` class. For example, we can create a controller named `SiteController`:

    public function actionAjaxRequest()
    {
        // Logic to handle the Ajax request
    }
    

Step 2: Create an Action in the Controller

Within the controller class, we need to create a public method named `actionAjaxRequest`. This method will handle the Ajax request. In Yii, any method starting with "action" will automatically be recognized as an action (or endpoint) for the controller.

Step 3: Generate and Validate CSRF Token

For security purposes, we need to generate and validate the CSRF token for each Ajax request. Yii provides the `yii\web\Request::enableCsrfValidation()` method to handle this. Typically, we disable or enable CSRF validation in the controller’s `beforeAction()` method:

    public function beforeAction($action)
    {
        if ($action->id === 'ajaxRequest') {
            $this->enableCsrfValidation = false;
        }
        return parent::beforeAction($action);
    }
    

Step 4: Handle the Ajax Request

Within the `actionAjaxRequest()` method, we use Yii’s `request` object to fetch the parameters from the Ajax request and return the corresponding data. Here’s an example of how to handle the Ajax request:

    public function actionAjaxRequest()
    {
        $request = Yii::$app->request;
        
        // Get Ajax request parameters
        $param1 = $request->post('param1');
        $param2 = $request->post('param2');
        
        // Process the request logic
        $result = // Processing logic
        
        // Return response data
        return json_encode(['result' => $result]);
    }
    

Step 5: Send Ajax Request from Frontend

On the frontend, you can use JavaScript (such as jQuery) to send the Ajax request. Here’s a simple example of sending an Ajax request:

    $.ajax({
        url: "/site/ajax-request", // Controller's Ajax request URL
        method: "POST", // Request method
        data: { param1: "value1", param2: "value2" }, // Request parameters
        success: function(response) {
            // Handle the response data
            var result = JSON.parse(response);
            console.log(result);
        }
    });
    

In this example, we are sending a POST request to `/site/ajax-request` with `param1` and `param2` as parameters.

Conclusion

By following these five steps, you can successfully create a controller in Yii to handle Ajax requests. The `actionAjaxRequest` method in the controller will process the Ajax request and return response data, while the frontend makes an Ajax call using jQuery. We hope the code examples in this article will help you better understand how to handle Ajax requests in the Yii framework.