我的$.post函数没有't返回任何数据
My $.post function doesn't return any data
我是Php和Ajax的新手,我一直在思考这个问题。我正试图使用$.post
简写函数用ajax更新我的简单表单,但我的脚本没有返回任何内容。我也尝试过$.ajax
,并使用了不同的数据类型,如json对象、json变量、serialize()
。。等
HTML
<section class="contact" id="contact">
<h2>Do you have a project in mind? Let's discuss it</h2>
<div id="form-messages">
</div>
<form action="" method="post" id="contact-form">
<div class="row">
<div class="col span-1-of-4"><label for="name">Your name</label></div>
<div class="col span-3-of-4"><input type="text" name="name" id="name" placeholder="Enter your name ..."></div>
</div>
<div class="row">
<div class="col span-1-of-4"><label for="email">Your email</label></div>
<div class="col span-3-of-4"><input type="email" name="email" id="email" placeholder="Enter your email ..."></div>
</div>
<div class="row">
<div class="col span-1-of-4"><label for="message">Your message</label></div>
<div class="col span-3-of-4"><textarea name="message" id="message" placeholder="Type in your message ..."></textarea></div>
</div>
<div class="row">
<div class="col span-1-of-4"></div>
<div class="col span-3-of-4"><input type="submit" name="submit" id="submit" value="Send your message"></div>
</div>
</form>
</section>
PHP
<?php
$name= $_POST['name'];
$email= $_POST['email'];
$message= $_POST['message'];
$error="";
$result="";
if (isset($_POST["submit"])) {
if (!$name) {
$error="<br />Please enter your name";
}
if (!$email) {
$error.="<br />Please enter your email address";
}
if (!$message) {
$error.="<br />Please enter a message";
}
if ($_POST['email']!="" AND !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$error.="<br />Please enter a valid email address";
}
if ($error) {
$result='<div class="error-message"><p id="alert"><strong>There were error(s) in your form:</strong>'.$error.'</p></div>';
} else {
if (mail("abderrahim.gadmy@gmail.com", "Gadmy Visions: Someone sent you a message!",
"Name: ". $_POST['name']."
Email: ".$_POST['email']."
Comment: ".$_POST['message'])) {
$result='<div class="success-message"><p id="alert"><strong>Thank you!</strong> I''ll be in touch</p></div>';
} else {
$result='<div class="error-message"><p id="alert">Sorry, there was an error sending your message. Please try again later.</p></div>';
}
}
echo $result;
}
?>
JS-
$(document).ready(function(){
$('#contact-form').on('submit',function(event){
$.post('contact.php',$('form').serialize(), function(data){
$('#form-messages').html(data);
});
//Prevent refresh
event.preventDefault();
});
});
长话短说:
jQueryserialize()不序列化按钮(因为它不知道哪个按钮用于提交表单)。请参阅:链接以及jQuery序列化文档:
注意:只有"成功的控件"被序列化到字符串中。没有序列化提交按钮值,因为表单不是使用按钮提交的。
由于您的PHP文件只有在设置了$_POST["submit"]
的情况下才会生成输出(事实并非如此,因为它没有与表单的其他部分一起序列化),因此实际上不会返回任何内容。
在php文件中使用不同的条件来检查表单是否真的成功POST,或者手动将提交按钮附加到序列化的数据中。
尝试使用检查表单是否可以提交
if($_SERVER['REQUEST_METHOD']=="POST")而不是使用isset($_POST["submit"])。
相关文章:
- AJAX:$_GET不返回任何值
- document.styleSheets不返回任何内容
- 在解析对象.save()中;没有返回任何原因
- PhantomJs在控制台中发出http请求时不会返回任何状态
- 为什么这个array.filter总是不返回任何内容
- IE8DOM转换XML,并且不从jQueryfind()或filter()返回任何内容
- 比较数组中的连续元素不会返回任何结果(javascript)
- WebKitBrowser.StringByEvaluatingJavaScriptFromString 不返回任何值
- Ajax 不返回任何结果
- 我的 API 调用没有返回任何内容
- Javascript函数img.onload不返回任何内容(真或假)
- 为什么我的 sinon 假服务器不返回任何内容
- beforeSave导致查询不返回任何内容
- Ajax对PHP页面的调用总是不返回任何内容,即使PHP页面有回声
- 控制器的Helper函数不返回任何内容
- 函数不返回任何内容
- Breeze.js getEntities不返回任何实体
- 自定义Angular.js过滤器在IE8中不返回任何内容,在Chrome/FF中运行良好
- Dexie.exists()方法不返回任何内容(Dexie.js&IndexedDB)
- getElementsByClassName未返回任何内容