I have been stuck on trying to send an ajax request to the controller. I think it is the routing but I don't know where to find the error. I can Paypal money if you would be able to get on a video call with me to resolve this issue. I look forward to hearing back from you.
Regards,
Che
Hi @che_figueroa,
Which version of Magento are you using and how are you trying to send the request?
Here is my ajax request:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $(".emailfocusout").focusout(function(){ $.ajax({ url: "<?php echo $this->getUrl('/checkout/Email/Email') ?>", type: "POST", data: JSON.stringify({"email": "che607@yahoo.com"}), contentType: "application/json", success: function(data) { console.log("SUCCESS: ", data); }, error: function(data) { console.log('ERROR: ', data); }, }); }); }); </script>
Here is my controller:
<?php class Accutrition_Checkout_EmailController extends Mage_Core_Controller_Front_Action { public function EmailAction() { $msg = "You hit emailAction"; echo $msg; } }
Here is my config.xml:
<?xml version="1.0"?> <config> <modules> <Accutrition_Checkout> <version>1.1.0</version> </Accutrition_Checkout> </modules> <global> <blocks> <accutrition_checkout> <class>Accutrition_Checkout_Block</class> </accutrition_checkout> <checkout> <rewrite> <onepage_shipping_method_available>Accutrition_Checkout_Block_Onepage_Shipping_Method_Available</onepage_shipping_method_available> </rewrite> </checkout> </blocks> <helpers> <accutrition_checkout> <class>Accutrition_Checkout_Helper</class> </accutrition_checkout> </helpers> <models> <accutrition_checkout> <class>Accutrition_Checkout_Model</class> </accutrition_checkout> </models> </global> <frontend> <routers> <checkout> <args> <modules> <Accutrition_Checkout before="Mage_Checkout">Accutrition_Checkout</Accutrition_Checkout> </modules> </args> </checkout> </routers> <events> <easycheckout_save_address_after> <observers> <accutrition_checkout> <class>Accutrition_Checkout_Model_Observer</class> <type>singleton</type> <method>easycheckoutSaveAddressAfter</method> </accutrition_checkout> </observers> </easycheckout_save_address_after> <easycheckout_save_shipping_method_after> <observers> <accutrition_checkout> <class>Accutrition_Checkout_Model_Observer</class> <type>singleton</type> <method>easycheckoutSaveShippingMethodAfter</method> </accutrition_checkout> </observers> </easycheckout_save_shipping_method_after> <customer_login> <observers> <accutrition_checkout> <class>Accutrition_Checkout_Model_Observer</class> <type>singleton</type> <method>customerLogin</method> </accutrition_checkout> </observers> </customer_login> </events> </frontend> </config>
I know I can send the ajax request because in the ajax request the success function is triggered and I get a 200 code in my post request with the correct params(data: { "email": "che607@yahoo.com", I know because when I check the Network tab in the browser dev tools the right params for the request are there). I can't hit the controller though. I am using Magento 1.
**UPDATE**
It it working partially. The base URL is: http://accutritionp71.local/
When I go to http://accutritionp71.local/checkout/Email/Email it hits the controller and displays the controller action output in the browser.
With this request:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $(".emailfocusout").focusout(function(){ $.ajax({ url: "<?php echo $this->getUrl('/checkout/Email/Email') ?>", type: "POST", data: JSON.stringify({"email": "che607@yahoo.com"}), contentType: "application/json", success: function(data) { console.log("SUCCESS: ", data); }, error: function(data) { console.log('ERROR: ', data); }, }); }); }); </script>
But in the Firefox dev tools it should that the request is: http://accutritionp71.local/
Isn't it supposed to be: http://accutritionp71.local/checkout/Email/Email ?
I just solved it, I had to change the URL path
url: "checkout/Email/Email"