M
M
msimrial2015-11-09 14:42:49
PHP
msimrial, 2015-11-09 14:42:49

Why is Forbidden thrown when requesting via ajax?

http://cmd:81/modules/msimcallme/ajax.php 403 (Forbidden)  - jquery-1.11.0.min.js?1443353439:4 POST 
send 
@ jquery-1.11.0.min.js?1443353439:4n.extend.ajax 
@ jquery-1.11.0.min.js?1443353439:4(anonymous function) 
@ index.php:278n.event.dispatch 
@ jquery-1.11.0.min.js?1443353439:3r.handle 
@ jquery-1.11.0.min.js?1443353439:3


files

<div class="rightcolumn">
    <div class="home">
        <p><a class="mainButton" href="#modal">Позвонить</a></p>
    </div>
</div>
    <div class="remodal" data-remodal-id="modal" role="dialog" aria-labelledby="modal1Title" aria-describedby="modal1Desc">
        <div class="remodalBorder">
            <p><img src="/../img/sendico.png"></p>
            <button data-remodal-action="close" class="remodal-close" aria-label="Close"></button>
            <form id="call_me_form">
                <h2 id="modal1Title">Оставьте ваши контактные данные и наш консультант свяжется <br>с вами</h2>
                <input type="text" class="putName" name="call_me_name" placeholder="Ваше ваше имя" required>
                <input  type="tel" class="putPhone" name="call_me_putPhone" placeholder="Введите номер телефона" required>
                <input type="submit" name="call_me_submit" class="btn" value="ОТПРАВИТЬ">
                <input type="hidden" name="formData" value="Заявка с сайта">
            </form>
        </div>
    </div>
{literal}
    <script>
        $(document).ready(function () {
            $("form").submit(function () {
                // Получение ID формы
                var formID = $(this).attr('id');
                // Добавление решётки к имени ID
                var formNm = $('#' + formID);

                $.ajax({
                    type: "POST",
                    url:  baseDir + 'modules/msimcallme/ajax.php',
                    data: formNm.serialize(),
                    success: function (data) {
                        // Вывод текста результата отправки
                        $(formNm).html(data);
                        console.log('send-data')
                    },
                    error: function (jqXHR, text, error) {
                        // Вывод текста ошибки отправки
                        console.log('error')
                        $(formNm).html(error);
                    }
                });
                return false;
            });
        });
    </script>
{/literal}


// ajax handler
<?php
require_once(dirname(__FILE__).'\..\..\config\config.inc.php');
require_once(dirname(__FILE__).'\..\..\init.php');
echo "call me plplp"."<br>";
if (Tools::isSubmit('call_me_submit'))
{
    echo "call me plplp";
    $name = Tools::getValue('call_me_name');
    $phone = Tools::getValue('call_me_putPhone');
    $formData = Tools::getValue('formData');

    $to = "[email protected]"; /*Укажите адрес, га который должно приходить письмо*/
    $sendfrom   = "[email protected]"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $subject = "$formData";
    $message = "$formData<br> <b>Имя пославшего:</b> $name <br><b>Телефон:</b> $phone";
    $send = mail ($to, $subject, $message, $headers);
    if ($send == 'true')
    {
        echo '<p class="success">Спасибо за отправку вашего сообщения!</p>';
    }
    else
    {
        echo '<p class="fail"><b>Ошибка. Сообщение не отправлено!</b></p>';
    }
}else {
    echo "Попробуйте еще раз";
    http_response_code(403);
    echo "Попробуйте еще раз";
}
exit;

Answer the question

In order to leave comments, you need to log in

1 answer(s)
V
Vitaly, 2015-11-09
@msimrial

From the documentation:
> Note: Only "successful controls" are serialized to the string. No submit button value is serialized since the form was not submitted using a button.
Do it in this way:

var data = formNm.serializeArray();
data['call_me_submit'] = 1;
$.ajax({
                    type: "POST",
                    url:  baseDir + 'modules/msimcallme/ajax.php',
                    data: data,
                    success: function (data) {
                        // Вывод текста результата отправки
                        $(formNm).html(data);
                        console.log('send-data')
                    },
                    error: function (jqXHR, text, error) {
                        // Вывод текста ошибки отправки
                        console.log('error')
                        $(formNm).html(error);
                    }
                });

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question