#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>