我无法理解在这个PHP脚本中我哪里出错了
我有一个普通的HTML表单,可以发送到sendmail.php脚本我无法理解在这个PHP脚本中我哪里出错了,php,html,forms,Php,Html,Forms,我有一个普通的HTML表单,可以发送到sendmail.php脚本 <?php header('Content-type: application/json'); $status = array( 'type'=>'success', 'message'=>'Thank you for contact us. We will contact you as soon as possible.' ); $name =
<?php
header('Content-type: application/json');
$status = array(
'type'=>'success',
'message'=>'Thank you for contact us. We will contact you as soon as possible.'
);
$name = @trim(stripslashes($_POST['name']));
$email = @trim(stripslashes($_POST['email']));
$number = @trim(stripslashes($_POST['number']));
$company = @trim(stripslashes($_POST['company']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));
$email_from = $email;
$email_to = '';
$body = 'Name: ' . $name . "\n\n" .'Number: ' . $number . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
echo json_encode($status);
echo $email;
die;
?>
它正在发送到指定的电子邮件地址,但未显示电子邮件中的变量。谁能告诉我哪里出了问题
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php">
<div class="col-sm-5 col-sm-offset-1">
<div class="form-group">
<label>Name *</label>
<input type="text" name="name" id="name" class="form-control" required="required">
</div>
<div class="form-group">
<label>Email *</label>
<input type="email" name="email" id="email" class="form-control" required="required">
</div>
<div class="form-group">
<label>Phone</label>
<input type="number" name="number" id="number" class="form-control">
</div>
<div class="form-group">
<label>Company Name</label>
<input type="text" name="company" id="company" class="form-control">
</div>
</div>
<div class="col-sm-5">
<div class="form-group">
<label>Subject *</label>
<input type="text" name="subject" id="subject" class="form-control" required="required">
</div>
<div class="form-group">
<label>Message *</label>
<textarea name="message" id="message" required="required" class="form-control" rows="8"></textarea>
</div>
<div class="form-group">
<button type="submit" name="submit" class="floatright btn btn-primary btn-lg" required="required">Submit Message</button>
<br><br><Br><br>
</div>
</div>
</form>
名字*
电子邮件*
电话
公司名称
主题*
信息*
提交消息
使用上面的表单代码编辑
var form=$(“#主联系人表单”);
表单提交(功能(事件){
event.preventDefault();
变量形式_状态=$('');
$.ajax({
url:$(this.attr('action'),
beforeSend:function(){
form.prepend(form_status.html(“电子邮件正在发送…”).fadeIn();
}
}).完成(功能(数据){
form_status.html(''+data.message+'
').delay(3000).fadeOut();
});
});
在上面的相关JS中添加了
更新:现在您告诉我们您通过ajax请求发送电子邮件,一切都清楚了。Ajax正在向服务器发送GET请求,该服务器不包含表单中的任何数据。根据我对JQuery的有限理解,您应该:
data
属性添加到ajax调用中,并为其提供表单数据的json数组方法
属性添加到ajax调用中,并将其设置为POST
变量形式=$(“#主联系人形式”);
表单提交(功能(事件){
event.preventDefault();
变量形式_状态=$('');
$.ajax({
url:$(this.attr('action'),
数据:[/*此处为您的表单数据*/],
方法:“POST”,
beforeSend:function(){
form.prepend(form_status.html(“电子邮件正在发送…”).fadeIn();
}
}).完成(功能(数据){
form_status.html(“”+data.message+”).delay(3000.fadeOut();
});
});我不太了解JQuery,不知道是否有一种方便的方法将表单数据封装到json结构中。但是,当然可以通过它们的ID获取各个字段并获取它们的值。显示表单HTML…并删除@并增加
错误报告
/显示错误
“感谢联系我们”,然后打印$\u POST以检查脚本中是否有POST变量返回为“未定义”…电子邮件通过,但同样没有变量。只有纯文本。当我用真正基本的html重写html表单时,它运行var_dump数组(6){[“email”]=>string(12)”asd@jdjd.com“[“姓名”]=>string(6)“asdasa”[“编号”]=>string(2)“广告”[“公司”]=>string(3)“asd”[“主题”]=>string(3)“asd”[“消息”]=>string(6)“asdasd”}string(76)“名称:asdasa编号:广告电子邮件:asd@jdjd.com主题:asd消息:asdasd“bool(true){”type:“success”,“Message:“感谢您与我们联系。我们将尽快与您联系。”}我已将其缩小为“id”形式“不过,我不知道为什么会发生这种情况。有什么想法吗?在JS中添加了corresponds@SpringheeledJack如果事先知道您正在使用AJAX,将会非常有用。请参阅我的最新答案。
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut();
});
});
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
var_dump($_POST);
$name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['number'];
$company = $_POST['company'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$email_from = $email;
$email_to = '';
$body = 'Name: ' . $name . "\n\n" .'Number: ' . $number . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
var_dump($body);
$success = mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
var_dump($success);
?>