Почему мой сценарий PHP выдает ошибку, в то время как сценарий работает отлично? - PullRequest
0 голосов
/ 07 мая 2020

Я создаю форму электронной почты с PHP и Ajax. Я делал формы раньше, но никогда не использовал Ajax. Я использую валидатор bootstrap для проверки формы, а затем, как только она будет проверена, на мой php скрипт отправляется запрос Ajax:

    $(function () {

    $('#contact-form').validator();


    // when the form is submitted
    $('#contact-form').on('submit', function (e) {

        // if the validator does not prevent form submit
        if (!e.isDefaultPrevented()) {

            // POST values in the background the the script URL
            $.ajax({
                url: "contact.php",
                type: "post",
                data: $('#contact-form').serialize(),
                success: function(data)
                {
                    // success message
                },
                error: function(jqXhr, textStatus, errorMessage){
                    console.log("Error: ", errorMessage);
                 }
            });
        }
    })
});

В моем php скрипте я прослушать запрос, а затем отправить обратно закодированные данные json. Если запроса нет, сценарий должен выдать сообщение об ошибке:

    // if requested by AJAX request return JSON response
if(
    isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
    strcasecmp($_SERVER['HTTP_X_REQUESTED_WITH'], 'xmlhttprequest') == 0
) {

    $responseArray = array('type' => 'success', 'message' => $okMessage);

    header('Content-Type: application/json');

    echo json_encode($responseArray);
} else {
    $responseArray = array('type' => 'danger', 'message' => $errorMessage);
    echo $responseArray['message'];
}

Когда я отправляю свою форму , электронное письмо проходит в мой почтовый ящик, как ожидалось , но меня перенаправляют на * Отображается 1009 * и $errorMessage. Это потому, что инструкция else запускается до получения запроса ajax? Если да, то как исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...