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"