Насколько я могу судить, этот скрипт отлично работает в Chrome и IE. Это не работает в Firefox. (Не обещание, что все работает отлично - иногда письмо не прошло, но мы не смогли восстановить эту ошибку.)Отправка электронной почты с использованием jquery не работает: PHP
EDIT: Теперь, кажется, что в Chrome и Firefox, письмо не отправлено на , сначала попробуйте, но если я нажму кнопку возврата с PayPal и отправлю еще раз, он будет отправлен.
Я думал, что проблема может заключаться в том, что AdBlock Plus отключает скрипты. Отключено ABP на странице, и оно отправлено ... но после обновления страницы и повторной попытки отправить ее снова не работало.
Эта регистрационная форма должна отправить электронное письмо, содержащее кучу данных формы, изменить соответствующие вводные данные для подготовки к отправке в PayPal с регистрацией пользователя, а затем перенаправить пользователя в PayPal для обработки платежа отдельно. Перенаправление на PayPal всегда происходит отлично, с соответствующими элементами в корзине.
Этот код находится в заголовке файла HTML. (. Он имел обыкновение использовать уменьшенную JQuery файл самостоятельно, так и в поиске ошибок я попытался ссылками на этом - не решить эту проблему)
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.js"></script>
<script type="text/javascript" src="[myscripts].js"></script>
начинается Форма:
<form id="[myformname]" name="[myformname]" method="post" action="">
[MyScripts] .js содержит следующее:
$(function() {
$('.error').hide();
$(".button").click(function() {
// many lines pulling input from form, generally of the type:
var firstname = $("input#firstname").val();
// as well as
var subscribe = $("input#subscribe").is(':checked');
// simple validation code for now, here is a generalized version
if (firstname == ''){
$('p#errors').html("Error: First name is required.");
$("p#errors").show();
return false;
}
else if (lastname == ''){
$('p#errors').html("Error: Last name is required.");
$("p#errors").show();
return false;
}
else {
$("p#errors").hide();
}
fixFields(); // this does the adjustment for PayPal
// checked checkboxes -> item_name_1, amount_1, etc.
// in the real code, submitString is very long
var submitString = 'firstname='+firstname+'&lastname='+lastname+'&email='+email+'&subscribe='+subscribe; // etc.
$.ajax({
type: "POST",
url: "register.php",
data: submitString,
success: function() {
return false;
}
});
submitForm(); // resets action to PayPal link, resubmits
});
});
в случае необходимости, здесь метод SubmitForm, определенный ранее в [MyScripts] .js:
function submitForm(){
var form_url = $("#[myformname]").attr("action");
//changing the action
$("#[myformname]").attr("action","https://www.paypal.com/cgi-bin/webscr");
//submit the form
$("#[myformname]").submit();
return true;
}
Вот register.php:
<?php
$to = "[example1]@gmail.com,[example2]@gmail.com";
$subject = "New Registration";
$headers = "From: [email protected][mysite.com]";
// shortened for readability's sake
$name = $_POST['firstname']." ".$_POST['lastname'];
$body = "INFORMATION\n".$name."\n".$_POST['email'].", Subscribe: ".$_POST['subscribe'];
$body = $body."\nSELECTIONS\n";
if ($_POST['option1']=="true") {
$body = $body."Option 1 Name\n Details Line 1\n Details Line 2\n";
}
if ($_POST['option2']=="true") {
$body = $body."Option 2 Name\n Details Line 1\n Details Line 2\n";
}
mail($to, $subject, $body, $headers);
?>
Извините, если это смехотворно длинный пост. Я энтузиаст программирования и очень новичок во многих языках, которые я использую здесь, поэтому я хотел быть как можно более ясным. Спасибо заранее за любые предложения.
Прежде всего, если он работает в некоторых браузерах, это не может быть проблемой PHP - поэтому ваш вопрос немного вводит в заблуждение, так как электронная почта РНР() не является проблемой здесь. –
Редактирование названия, чтобы отразить, что проблемы больше не ограничиваются Firefox. – Michelle
Если я прокомментирую submitForm(); line, электронное письмо отправляется при первой загрузке, в Chrome и в Firefox. Буг ...? – Michelle