2016-09-18 2 views
0

Я пытаюсь создать контактную форму с PHP и AJAX. Электронная почта отправляет и все, но он всегда говорит "Failed to send!" даже в консоли он говорит "true" что должно привести к HTML "Message Sent!"Как получить возвращаемые данные из файла PHP через AJAX?

Так что я написал это в конце моего PHP скрипт:

if (!$mail->send()) { 
     echo $mail->ErrorInfo; 
    } else { 
     echo "true";  
} 

и что должно означает, что через AJAX выходные данные, которые я получаю, должны быть одним из этих, правильно?

   ajax.SetText("Sending..."); 
       $.post("sendmail.php", { 
        name: userName, email: userEmail, comments: userComments, business: currentBusiness, website: currentWebsite 
       }, function(data) { 
        if(data == "true") { 

         ajax.SetText("Sent!"); 
         console.log(data); 


         $.get("sent.html", function(sentData){ 

          $("#content").html(sentData); 

         }); 

        } else { 
         ajax.SetText("Send mail"); 
         console.log(data); 
         $.get("unsent.html", function(sentData){ 

          $("#content").html(sentData); 

         }); 


        } 

        ajax.isSubmiting = false; 
       }); 

Это JQuery^

Так в основном, если письмо будет отправлено, я хочу возвращение быть «истинным» и тогда я мог бы поставить необходимую Вам информацию на странице, как «Сообщение было отправлено! " Но в этом случае, если он не может отправить или преуспеть, он никогда не вернет true. Я также пробовал в файле php print_r("true") и die("true"), но он все еще не работает. Кто-нибудь знает, почему? Любая вещь была бы оценена, спасибо.

ответ

2

Похоже, система принимает "true" как ключевое слово. Попробуйте поставить OK или что-то в этом роде. Также проверьте, не выводите ли вы лишнюю строку. Вы можете сделать это, установив .trim().

if (data.trim() == "true") { 

Для проверки такого рода проблем, попробуйте на консоли с помощью encodeURI() функции:

console.log(encodeURI(data)); 

Это может дать вам что-то похожее на:

console

Я создал Введите Строка на выходе. Это может не совпадать, если вы проверяете с:

data == "true" 

Так что вам, возможно, придется использовать функцию trim() здесь. Посмотрите ниже для получения дополнительной информации:

console

Я твердо убежден, что это будет так. :)

+0

Я думал, что это сработает, но то же самое происходит. И в консоли он говорит правду, так что я очень потерял –

+0

Консоль говорит правду? Вы сделали 'console.log (encodeURI (data));'? Каков результат этого? –

+1

Я нашел проблему! Поэтому в скрипте (im, использующем PHPMailer) у меня была эта строка кода «$ mail-> SMTPDebug = 2;» и как только я удалил его, он работал безупречно. Благодаря! –

Смежные вопросы