Я очень новичок в этом, поэтому извиняюсь, мой вопрос базовый, но он поставил меня в тупик на несколько часов.
У меня есть контактная форма, которая использует немного AJAX для POST в мой файл PHP. У меня проблема в том, что когда я пытаюсь заставить PHP отправить эти данные по электронной почте, он не читает значения POST. PHP работал, когда я тестировал его без метода публикации JS/AJAX, но чтобы остановить обновление страницы, я выбрал вариант AJAX. Теперь, когда я добавил ajax, результат электронной почты не отображается с данными (я могу проверить и увидеть, что данные формы заполнены, просто неясно, почему они не заполняются в электронном письме) :
Name:
Email:
Message:
Любое руководство относительно того, почему мой почтовый сервер получает только текст, но не POST
Открытие и закрытие HTML в форме:
<form data-parsley-validate action="./assets/contactform.php" method="POST">
<div class="formRow">
<label for="name" class="obscure">Name</label>
<input type="text" name="nameInput" id="name" placeholder="Name" required data-parsley-error-message="Please enter your name"></input>
</div>
<div class="formRow">
<label for="email" class="obscure">Email</label>
<input name="emailInput" id="email" type="email" placeholder="Email" required data-parsley-error-message="Please enter a valid email address"></input>
</div>
<div class="formRow">
<label for="message" class="obscure">Message</label>
<textarea name="messageInput" id="message">Message</textarea>
</div>
<input type="submit" name="submit"></input>
Скрипт PHP:
<?php
$to = '[email protected]';
$subject = 'Post from your website';
$message = "Name: " . $_POST['nameInput'] . "\n Email: " . $_POST['emailInput'] . "\n Message: " . $_POST['messageInput'];
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: ' . $_POST['emailInput'] . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
exit;
?>
Java для формы:
$(функция() {
$.ajax({ type: 'POST', url: './assets/contactform.php', data: { name : $('input[name=nameInput]').val(), email : $('input[name=emailInput]').val(), message : $('textarea[name=messageInput]').val() }, dataType: 'json' }) event.preventDefault();
});
});
— Обновление от 07.08.2014—
Ниже приведен код jquery, который решил мою проблему.
// get the data from the form
$('form').submit(function(event){
var fdata = $(this).serializeArray();
fdata.push({ name: 'submit', value: true });
$.post('./assets/contactform.php', fdata, function (data) {
alert('Data Loaded:' + data); });
console.log(fdata);
event.preventDefault();
});
});
data
. Взгляните на эту форму Ajax, которая не работает (jQuery - PHP) а>. - person Athafoud   schedule 07.07.2014name
в phpnameInput
и так далее. Они должны быть одинаковыми! Кроме того, используйте firebug для отладки сообщений ajax. - person machineaddict   schedule 07.07.2014name
, в php вы используете$_POST['nameInput']
, где должно быть$_POST['name']
. Понятно? АJava for the form
на самом делеjavascript
, это два разных языка программирования. - person machineaddict   schedule 08.07.2014