我知道这只是一个简单的post到php文件通过Ajax。这是我以前做过的事情,但这次我肯定遗漏了什么。我不能弄清楚为什么我的PHP文件不会读取或回任何张贴的数据。当PHP代码与表单在同一个文件中时,它可以正常工作,但是当我将PHP文件移动到外部源时,它就停止工作了。所有的数据都显示在header中,但是没有被读取。
请求负载
name=Form+Name&email=myemail%40email.com&tel=2345557777&web=http%3A%2F%2Fmywebsite.com&msg=This+is+the+message Name
表单数据(回调不返回任何数据)
contact.on('submit', function(){
var contactData = contact.serialize();
console.log(contactData);
return ajaxPost('mail.php', 'POST', contactData, (data) => {
console.log(data);
// Contact form callback
alert('Thanks for contacting us!');
});
});
Ajax Post var ajaxPost = function (x, y, z, callback){
$.ajax({
url: x,
type: y,
data: z,
// encode: true,
processData: true,
contentType: false,
dataType: 'html'
}).done(() => {
callback();
});
event.preventDefault();
};
PHP文件 $name = $_POST['name'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$msg = $_POST['msg'];
$web = $_POST['web'];
$admin_email = "myemail@email.com";
mail($admin_email, 'Name: ' . $name . " Email: " . $email, ' '. "Message: " . $msg . " Website: " . $web);
echo $name . $email . $tel;
HTML表单<div class="form col-lg-6 col-md-6 col-sm-6 col-xs-12 text-center animated slideInDown">
<form id="contact" name="contact-form" action="" method="post" datatype="multipart/form-data">
<h3 class="text-center">Drop us a line</h3>
<fieldset>
<input placeholder="Your name" name="name" type="text" tabindex="1" required autofocus>
</fieldset>
<fieldset>
<input placeholder="Your Email Address" name="email" type="text" tabindex="2" required>
</fieldset>
<fieldset>
<input placeholder="Your Phone Number (optional)" name="tel" type="text" tabindex="3" required>
</fieldset>
<fieldset>
<input placeholder="Your Web Site (optional)" name="web" type="text" tabindex="4">
</fieldset>
<fieldset>
<textarea placeholder="Type your message here...." name="msg" tabindex="5" required></textarea>
</fieldset>
<fieldset>
<button type="submit" id="contact-submit">Submit</button>
</fieldset>
<a id='number-attn' class="glyphicon glyphicon-phone" href="tel:5555555555"> 5555555555</a>
</form>
</div>
</div>
我仍然不确定为什么另一种方式不工作,但我让我的PHP文件通过使用FormData对象来对话。
var contactData = new FormData(contact[0]);
从ajax post中删除选项"contentType: false"