我正在尝试使用联系表单设置一个非常简单的即将到来的页面。我上传了所有内容here(点击立即联系我们按钮)。
现在,当我填写信息并点击发送时,它会给我一条错误信息。我无法看到任何错误,并且错误报告设置为打开(可能在错误的地方),这里是php代码:
<?php
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);
if (isset($_REQUEST['name'],$_REQUEST['email'])) {
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$message = $_REQUEST['message'];
$to = 'editedforstackoverflow';
$subject = 'Contact Request From Website';
$headers = "From: ".$name." <".$email."> \r\n";
$send_email = mail($to,$subject,$message,$headers);
echo ($send_email) ? 'success' : 'error';
}
?>
这里是js部分:
$('#ajax-contact').on('submit', function() {
// Add text 'loading...' right after clicking on the submit button.
$('.output_message').text('Loading...');
var form = $(this);
$.ajax({
url: form.attr('action'),
method: form.attr('method'),
data: form.serialize(),
success: function(result) {
if (result == 'success') {
$('.output_message').text('Nachricht erfolgreich geschickt!');
} else {
$('.output_message').text('Da ist leider ein Fehler unterlaufen!');
}
}
});
// Prevents default submission of the form after clicking on the submit button.
return false;
});
我无法真正看到自己犯了什么错误,任何帮助都会受到赞赏!
答案 0 :(得分:2)
在您的网站中查看您的表单时,您的<input>
代码似乎缺少name
和name
字段中的email
个属性:
他们需要拥有name="name"
和name="email"
,以便.serialize()
可以获取这些值并将其带入您的请求中。因此,在PHP中,它们将位于您的$_REQUEST
这是关于我对失踪name=""
的意思的演示。我明确省略了字段3,以便您可以看到。
http://codepad.viper-7.com/rTTPuq
所以解决方法是。只需在name="name"
个代码上添加name="email"
和<input>
。
manual中的实际注释:
注意:只有“成功控件”被序列化为字符串。没有提交按钮值被序列化,因为表单未使用按钮提交。要使表单元素的值包含在序列化字符串中,该元素必须具有名称属性。
答案 1 :(得分:1)
你的if语句是完全错误的。
您无法使用,
分隔2个语句,而应使用||
或&&
分隔。
The Logical Operators文章将让您熟悉这些操作符
另外,$_REQUEST
非常不安全。最好不要使用它们。不使用它们的原因解释Here。