Почему этот AJAX-вызов правильного php-скрипта ничего не возвращает? - PullRequest
1 голос
/ 11 августа 2011

Я опубликовал аналогичный вопрос ранее, просто я не понимал, что в коде, который я поместил, была очевидная ошибка (не предоставление данных), которую я недавно создал. Теперь я переделываю это с этим, потому что у меня все еще есть проблема.

У меня есть этот AJAX:

function sendMail(){
            $.ajax({
                type: "POST",
                url: "../prestige-auto/php/sendMail.php",
                data: {"message" : $('#contactMessage').html(),
                         "email" : $('#contactEmail').val(),
                         "name" : $('#contactName').val()},
                success: function(result){
                    if (result == 'success') {
                        alert(result);
                    } else {
                        alert(result);
                    }
                }
            });
        };

$('#submitContact').click(function(){
        sendMail();
    })

и этот PHP:

<?php

$trimmed = array_map('trim', $_POST);

$message = $trimmed['message'];
$email = $trimmed['email'];
$name = $trimmed['name'];

if (empty($message)) {
    $message = FALSE;
}

if (empty($email)) {
    $message = FALSE;
}

if (empty($name)) {
    $message = FALSE;
}

if ($message && $email && $name){

    $body = "From: $name.\n \n $message";

    mail(/*some email*/, 'Website Contact Form Submission', $body, "From: $email");

    echo ('success');

}

echo($message.' '.$email.' '.$name);

?>

Все определенные html-элементы существуют. Когда я запускаю его, все, что возвращает, - это пустое окно с предупреждением (это означает, что скрипт PHP не распечатал успех). Любая идея, почему он не отправляет почту?

Ответы [ 3 ]

1 голос
/ 11 августа 2011

Вы не вышли после вывода 'success' - PHP еще не остановил обработку, поэтому он просто переходит к следующей строке и также выводит echo($message.' '.$email.' '.$name);.

Это означает, что ваш JS-тест сравнивает success с success$message $email $name, что всегда ложно.

Если вы хотите остановить обработку, у вас есть два варианта: либо exit, либо die (не делайте этого), либо оберните оставшуюся часть кода в тег else, например:

if ($message && $email && $name){

    $body = "From: $name.\n \n $message";

    mail(/*some email*/, 'Website Contact Form Submission', $body, "From: $email");

    echo ('success');

} else {

    echo($message.' '.$email.' '.$name);

}

Кроме того, убедитесь, что вы не заканчиваете свои PHP-скрипты ?>! Это почти всегда приводит к проблемам позже, когда PHP-скрипт выдает в конце некоторое нежелательное пустое пространство, что потерпеть неудачу.

0 голосов
/ 11 августа 2011

сначала проверьте ответ ajax, чтобы выяснить, есть ли какая-либо ошибка.

0 голосов
/ 11 августа 2011

Не использовать array_map('trim', $_POST) http://www.php.net/manual/en/function.trim.php#96246

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