json-ajax动画防止通过php发送数据
json ajax animation prevents sending data through php
我正在构建一个提交电子邮件的表单。当我添加ajax动画时,数据无法传递到php。不知道为什么。请帮忙,非常感谢。
这是js
//contact form
var form = $('.contact-form');
form.submit(function () {
$this = $(this);
$.post($(this).attr('action'), function(data) {
$this.prev().text(data.message).fadeIn().delay(3000).fadeOut();
},'json');
return false;
});
这是php
<?php
header('Content-type: application/json');
$status = array(
'type'=>'success',
'message'=>'Thank you for contacting us, we will get you back soon!'
);
$firstname = @trim(stripslashes($_POST['firstname']));
$email = @trim(stripslashes($_POST['email2']));
$lastname = @trim(stripslashes($_POST['lastname']));
$message = @trim(stripslashes($_POST['message']));
$email_from = $email;
$email_to = 'linchenyu1988@gmail.com';
$body = 'First Name: ' . $firstname . "'n'n" . 'Last Name: ' . $lastname . "'n'n" . 'Email: ' . $email . "'n'n" . 'Message: ' . $message;
$success = @mail($email_to, 'Mortise Message' , $body, 'From: <'.$email_from.'>');
echo json_encode($status);
die;
?>
这是HTML
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" role="form">
<input name="firstname" id="firstname" type="text" placeholder="First Name">
<input name="lastname" id="lastname" type="text" placeholder="Last Name">
<input name="email2" id="email2" type="text" placeholder="Email address">
<textarea name="message" id="message" rows="8" placeholder="Message"></textarea>
<button type="submit" class="btn btn-primary btn-lg">Send Message</button>
</form>
首先。。。。您没有将任何数据发布到处理AJAX的PHP文件。。。你可能想尝试一些类似的东西:
Java脚本:已更新以提醒一些消息
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
<script type="text/javascript">
jQuery.noConflict();
(function ($) {
$(document).ready(function(e) {
//contact form
var form = $('.contact-form');
form.submit(function (evt) {
var $this = $(this);
// PREVENT THE FORM FROM FOLLOWING THE NORMAL COURSE
evt.preventDefault();
// BUILD UP YOUR AJAX LAYER...
$.ajax({
url: form.attr("action"),
dataType: "json",
cache: false,
type: "POST",
data: ({ // ADD DATA TO THAT WOULD BE POSTED VIA AJAX...
firstname : $("#firstname").val(), //<== ADD THE FIRST NAME TO THE DATA TO BE POSTED AS IT IS NEEDED IN YOUR PHP
lastname : $("#lastname").val(), //<== ADD THE LAST NAME TO THE DATA TO BE POSTED AS IT IS NEEDED IN YOUR PHP
email2 : $("#email2").val(), //<== ADD THE EMAIL TO THE DATA TO BE POSTED AS IT IS NEEDED IN YOUR PHP
message : $("#message").val() //<== ADD THE MESSAGE TO THE DATA TO BE POSTED AS IT IS NEEDED IN YOUR PHP
}),
success: function (data, textStatus, jqXHR) {
console.log(data);
if(data){
// THIS IS NEW...
var msg = "TYPE: " + data.type + "'nMESSAGE:" + data.message;
// PERFORM YOUR ANIMATION...
$this.prev().text(data.message).fadeIn().delay(3000).fadeOut();
// THIS TOO...
alert(msg);
}
},
error: function (jqXHR, textStatus, errorThrown) {
// THIS IS NEW...
var err = 'The following error occured: ' + textStatus, errorThrown;
console.log(err);
// THIS ALERT TOO...
alert(err);
},
complete: function (jqXHR, textStatus) {
}
});
});
});
})(jQuery);
</script>
PHP
<?php
// IF THIS DOESN'T WORK, TRY REMOVING THE HEADER PART TEMPORARILY
// TO SEE HOW THINGS PLAY OUT, THOUGH IT SHOULD NOT BE A CAUSE FOR
// ALARM... (ACTUALLY THE OPPOSITE).
header('Content-type: application/json');
$status = array(
'type' =>'success',
'message' =>'Thank you for contacting us, we will get you back soon!'
);
$firstname = @trim(stripslashes($_POST['firstname']));
$email = @trim(stripslashes($_POST['email2']));
$lastname = @trim(stripslashes($_POST['lastname']));
$message = @trim(stripslashes($_POST['message']));
$email_from = $email;
$email_to = 'linchenyu1988@gmail.com';
$body = 'First Name: ' . $firstname . "'n'n" . 'Last Name: ' . $lastname . "'n'n" . 'Email: ' . $email . "'n'n" . 'Message: ' . $message;
$success = @mail($email_to, 'Mortise Message' , $body, 'From: <'.$email_from.'>');
die( json_encode($status) );
?>
HTML
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" role="form">
<input name="firstname" id="firstname" type="text" placeholder="First Name">
<input name="lastname" id="lastname" type="text" placeholder="Last Name">
<input name="email2" id="email2" type="text" placeholder="Email address">
<textarea name="message" id="message" rows="8" placeholder="Message"></textarea>
<button type="submit" id="submit-btn" class="btn btn-primary btn-lg">Send Message</button>
</form>
我建议使用"ajax"而不是"post"
$.ajax({ type: 'POST', url: 'http://www.yoururl.com', data: {key:'data'}, success: function(data){ alert(data); } });
并确保将正确的参数传递给php。
根据这个例子:
$.post( "ajax/test.html", function( data ) {
$( ".result" ).html( data );
});
第一个post参数是url,所以请确保"$(this).attr('action')"是正确的。
相关文章:
- 如何使用Jquery一步一步地获取PHP数据
- 过滤包含一些文本的 PHP 数据表
- Ajax 使用函数每秒获取一次 php 数据
- Ajax表单不返回PHP数据
- AJAX和PHP数据传输不起作用
- AJAX:将PHP数据存储在Javascript变量中
- 可以通过更改下拉菜单中的选项来发送/接收PHP数据
- Ajax 模态窗口可以访问父窗口 PHP 数据吗?
- 如何在 JavaScript 变量中获取 PHP 数据
- ajax 调用 PHP 数据返回 VM92:1 未捕获语法错误:意外的标记 {.
- Javascript - 自动从数据库加载php数据
- 将 PHP 数据从mysql_fetch_array保存为脚本变量
- 将 php 数据表导出为 pdf 版本
- 将 PHP 数据发送到 JavaScript 单击事件
- 将PHP数据返回到我当前的网页,供Javascript访问
- 带有 PHP 数据闪烁更新的 Ajax
- 将引导模式与动态 PHP 数据重用
- 将 php 数据输出到 jquery 数组中
- 按日期更改 PHP 数据表中的行颜色
- 如何将会话 php 数据从 PHP 传输到 JS