Функция обратного вызова jQuery не выполнена

0

У меня есть контактная форма с несколькими полями ввода и div, который действует как кнопка - когда я нажимаю на нее, она вызывает функцию, которая проверяет форму, и если все в порядке, она отправляет ее. Функция отправляет данные из входов в файл API.php, который вызывает функцию отправки в файле BusinessLogic.php. После отправки формы - функция обратного вызова должна быть активирована, и она должна анимировать div подтверждения.

HTML входов:

<div id="contact_inputs_block">
    <div class="div_contact_form_input_box div_input_name">
        <input type="text" name="Name" placeholder="* Name" id="name">
    </div>
    <div class="div_contact_form_input_box div_input_phone">
        <input type="tel" name="Phone" placeholder="* Phone" id="phone">
    </div>
    <div class="div_contact_form_input_box div_input_email">
        <input type="email" name="Email" placeholder="* Email" id="email">
    </div>
</div>
<div class="form_confirmation_wraper">
    <div id="div_form_confirmation">
        Message sent.
    </div>
    <div class="div_send_form">

    </div>
</div>

Здесь моя функция:

function submit_form(language)
{   

var email_str = $("#email").val();
var errors = new Array();

$("#contact_inputs_block>div:not(:last-child)").css({'border-color' : '#a5957e', 'background-color' : '#f8f8f8'});


if ($("#name").val()=="")
{
    errors.push(".div_input_name");
}
if(!validate_email(email_str))
{
    errors.push(".div_input_email");
}
if ($("#phone").val()=="")
{
    errors.push(".div_input_phone");
}


if (errors.length == 0)
{


    $.getJSON("inc/API.php",
    {
        command : "send_contact_form",
        name : $("#name").val(),
        email : email_str,
        phone : $("#phone").val(),
        message : $("#message").val().replace(/\n/g, '<br>'),
        form_language: language
    } ,function(){
        alert("sent");
        $("#div_form_confirmation").animate({opacity:1}, 1000, function(){
            setTimeout($("#div_form_confirmation").animate({opacity:0}, 3000, function(){location.reload()}),6000);
        }); // end callback function
    }); // end getJSON
} // end if
else
{
    for (var i = 0; i <= errors.length; i++)
    {
        $(errors[i]).css({'border-color' : '#E60005', 'background-color' : '#ffc4c9'});
    }
}
}

это функция в API.php:

include_once 'BusinessLogic.php';
session_start();

$command = $_REQUEST["command"];

switch($command)
{
    case "send_contact_form" :
        send_contact_form($_REQUEST["name"], $_REQUEST["email"], 
            $_REQUEST["phone"], $_REQUEST["message"], $_REQUEST["form_language"]);
        break;
}

и BusinessLogic.php фактически отправляет почту.

Почта отправляется, все в порядке. Проблема заключается в том, что функция обратного вызова submit_form() никогда не запускается, и я не вижу подтверждения того, что почта была отправлена.

Почему это происходит и как я могу это исправить? Благодарю!

  • 0
    Не могли бы вы предоставить HTML-код формы?
  • 0
    Ваш php не возвращает JSON, в результате чего генерируется parseerror. Вместо этого используйте $ .get или измените ваш php, чтобы он возвращал json.
Показать ещё 4 комментария
Теги:
callback

1 ответ

2
Лучший ответ

Другой подход мог бы использовать $.post вместо $.getJSON (все остальное останется прежним). Он сделает желаемый вызов ajax. Определенные параметры будут в массиве $ _POST ($ _REQUEST в порядке)

  • 0
    Это сработало, спасибо! Интересно, что этот точный код работает для меня в других моих формах, я просто повторно использовал его и внес некоторые коррективы, но в этот раз он почему-то не сработал. Еще раз спасибо!
  • 0
    Междоменные проблемы возможно?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню