Отправить переменную jQuery по почте

#javascript #php #jquery #ajax #email

#javascript #php #jquery #ajax #Адрес электронной почты

Вопрос:

У меня есть переменная jQuery, которая содержит HTML и значения из формы. Я хотел бы отправить ее по электронной почте, используя отдельный php @mail -файл с.

Я пытаюсь отправить эту переменную с $.ajax помощью функции jQuery в форме отправки, но она не отправляет переменную в файл php, и поэтому электронное письмо не отправляется.

Вот мой код

jQuery :

 $('form').submit(function(){
    var foo = '<p>Some message</p>';
    $.ajax({
        url: '/send.php',
        type: 'post', 
        data: {foo : foo},
        success: function() { 
            alert('email sent!');
        }
    });
    return false;
});
  

send.php :

 <?php

    $email_to = "XXX";
    $email_from = "YYY";
    $email_message = $_POST["foo"];
    $email_subject = "[Email subject]";
    $headers = 'From: '.$email_from."rn".
    'Reply-To: '.$email_from."rn" .
    'X-Mailer: PHP/' . phpversion();

    @mail($email_to, $email_subject, $email_message, $headers);  
?>
  

Я попытался echo использовать переменную foo в send.php и удаление return false; в jQuery, но переменная, похоже, не передается в файл, и ничего не отображается.

Что я делаю не так?

Комментарии:

1. может data: {"foo": foo} быть, поможет (я не уверен)

2. @ciuak Я пробовал это, но это тоже не сработало

3. Используйте инструменты вашего браузера, чтобы проверить, что передается в скрипт; это может пролить некоторый свет на проблему. Возможно, вы отправляете данные JSON, а не данные POST.

4. Если вы жестко email_message запрограммируете, действительно ли он отправляет электронное письмо нормально? Если нет, возможно, вам придется сначала изучить это

5. или, может быть: url: '/send.php?foo=' message — используя GET?

Ответ №1:

Ваш код в порядке! Мы предполагаем, что ваш веб-сервер PHP работает, поэтому возможны только 2 ошибки:

 url: '/send.php'
  

Вы уверены send.php находится в корне вашего домена? Нравится

 http://localhost/send.php 
  

Вторая возможность заключается в том, что у вас есть предыдущая фатальная ошибка javascript, поэтому ваши строки ajax никогда не будут прочитаны…

Как отлаживать?

1 — Обновляются ли ваши страницы при публикации формы? Если да, имеется предыдущая ошибка, которая не позволяет возвращать false; для чтения

2 — Вы можете нажать клавишу F12 в большинстве браузеров, чтобы открыть инструменты разработчика, в этом случае сетевая панель — это то, что вам нужно: просто попробуйте свой код с открытой этой панелью и посмотрите, что там происходит … код ошибки 404 означает «Я не могу найти send.php !».

Эта СКРИПКА получает значение 404, потому что http://fiddle.jshell.net/send.php не существует.

Ответ №2:

Попробуйте, это работает для вас.

 <html>
   <body>  
        <form method="post" class="mailform" onsubmit="return false;">
            <input type="submit" value="submit"/>
        </form>
        <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
        <script>
            $(document).on('submit','form',function()
            {
                var foo = '<p>Some message</p>';
                $.ajax({
                    url: 'send.php',
                    type: 'post', 
                    data: {'foo' : foo},
                    success: function() { 
                        alert('email sent!');
                    }
                });
                return false;
            });
        </script>
   </body>
</html>