Prabhakaran A
Prabhakaran A

Reputation: 63

How to ajax request to custom page in prestashop 1.7

Am apology for my bad english. Am new to prestashop. Please anybody help. How to send AJAX request to custom php file in prestashop

//My js file
     $.ajax({
     url : baseUrl + "modules/<myModule>/ajaxfunc.php",
     type: "POST",
     cache: false,
     data : {form_data: 1 , action:'imageuploadAction'},

     beforeSend: function() {
     $('body').append('<div class="loading_popup">Loading...</div>');},        

    success: function(data){
    console.log(data);
       }
      });

// php file
// modules/<myModule>/ajaxfanc.php

   <?php
   include_once('../../config/config.inc.php');
   include_once('../../init.php');
   class ajaxfuncAjaxModuleFrontController extends ModuleFrontController
    {
    public function  imageuploadAction() {
     die('here');
    }
   }
   ?>

I didn't know its be correct or not. please guide me.

Upvotes: 2

Views: 12000

Answers (2)

Prabhakaran A
Prabhakaran A

Reputation: 63

I have found the solution to get the proper Ajax request in prestashop 1.7

//In tpl file

<script>
  var url= {url entity='module' name='<myModuleName>' controller='<MyControllerName>' params = ['var1' => 1,'var2' => 2,action => 'MyControllerAction']}
</script>

//In Js file

$.ajax({
url : url,
type: "POST",
data : 'var3='3,
success : function(response){
  console.log(response);

} });

//In Controller Php file

<?php
  require_once(dirname(__FILE__).'../../../../config/config.inc.php');
  require_once(dirname(__FILE__).'../../../../init.php');
  class <MyModule><MyController>ModuleFrontController extends ModuleFrontController
    {
      public function initContent()
      {
       $this->ajax = true;
        parent::initContent();
      }
      // displayAjax for FrontEnd Invoke the ajax action
      // ajaxProcess for BackEnd Invoke the ajax action

       public function displayAjaxMyControllerAction()
        {
         $var1 = Tools::getValue('var1');
         $var2 = Tools::getValue('var2');
         $var3 = Tools::getValue('var3');

         header('Content-Type: application/json');
         die(Tools::jsonEncode(['var1'=> $var3]);
        }
      }

Upvotes: 2

Dennis de Best
Dennis de Best

Reputation: 1108

You can use an ajax front controller in your module and generate the URL you need for the Ajax request in the module itself with a hook.

See Make an ajax request from a Prestashop module

Upvotes: 2

Related Questions