我正在编写动态联系表单。代码如下所示:
的 jQuery的:
$.ajax({
type: "POST",
url: "sendmail.php",
data: {email: email, message: message, captcha: captcha}
})
.done(function( result ) {
alert(result);
})
PHP:
<?php
session_start();
$email = $_POST['email'];
$message = $_POST['message'];
$captcha = $_POST['captcha'];
if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&strtoupper($_SESSION["captcha_code"])==strtoupper($_POST["captcha"]))
{
@mail('mymail@gmail.com', 'Subject', $message, 'From:' . email);
echo "Message successfully sent.";
}
else
{
// change opacity of #error div
}
?>
问题是如果输入了错误的验证码,如何更改隐藏div的不透明度? 在这种情况下,我需要在PHP脚本或其他地方插入此代码:
$('#error').css({opacity:'1'});
请记住,我不能用echo注入代码,因为我使用alert来提供从PHP脚本返回的信息。
答案 0 :(得分:0)
通常我会使用这样的div:
<div id="error" style="display: none;">ERROR PUT HERE</div>
使用Jquery,你可以打电话给...
$('#error').show();
让它可见!
编辑:我明白你在做什么。我建议您使用JSON作为数据类型。
<强> PHP 强>
<?php
session_start();
$email = $_POST['email'];
$message = $_POST['message'];
$captcha = $_POST['captcha'];
if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&strtoupper($_SESSION["captcha_code"])==strtoupper($_POST["captcha"]))
{
@mail('mymail@gmail.com', 'Subject', $message, 'From:' . email);
echo json_encode(array('success' => true, 'message' => "Message successfully Sent"));
}
else
{
echo json_encode(array('success' => false, 'message' => "(PUT YOUR MESSAGE HERE!)"));
}
?>
<强> Jquery的强>
$.ajax({
type: "POST",
url: "sendmail.php",
dataType: "json"
data: {email: email, message: message, captcha: captcha}
})
.done(function( result ) {
if(result.success) {
alert(result.message);
} else {
$("#error").text(result.message);
$('#error').css({opacity:'1'});
}
})
答案 1 :(得分:0)
为jQuery添加成功部分:
success: function(data) {
if(data == 'error'){
$('#error').css({opacity:'1'});
}
}
在你的PHP中:
if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&strtoupper($_SESSION["captcha_code"])==strtoupper($_POST["captcha"]))
{
@mail('mymail@gmail.com', 'Subject', $message, 'From:' . email);
echo "Message successfully sent.";
}
else
{
echo "error";
}
答案 2 :(得分:0)
建议:使用ajax .fail()
设置错误$.ajax({
type: "POST",
url: "sendmail.php",
data: {email: email, message: message, captcha: captcha}
})
.done(function( result ) { alert(result); })
.fail(function() { alert("error");});
答案 3 :(得分:0)
有几种方法可以做到这一点。一种方法是使用可以在加载时执行的javascript代码从php响应:
<?php
session_start();
$email = $_POST['email'];
$message = $_POST['message'];
$captcha = $_POST['captcha'];
if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&strtoupper($_SESSION["captcha_code"])==strtoupper($_POST["captcha"]))
{
@mail('mymail@gmail.com', 'Subject', $message, 'From:' . email);
echo "Message successfully sent.";
}
else
{
// change opacity of #error div
echo "<script type='text/javascript'>";
echo " $('#error').css({opacity:'1'});";
echo "</script>";
}
?>
在这种情况下,当您打算更改错误div的不透明度时,您的响应是要执行的一些JavaScript代码。但是,如果您提醒ajax的结果,它也会在警报消息中输入整个javascript代码。
另一种方法是实际返回200(成功)以外的错误代码并检查特定情况:
<?php
session_start();
$email = $_POST['email'];
$message = $_POST['message'];
$captcha = $_POST['captcha'];
if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&strtoupper($_SESSION["captcha_code"])==strtoupper($_POST["captcha"]))
{
@mail('mymail@gmail.com', 'Subject', $message, 'From:' . email);
echo "Message successfully sent.";
}
else
{
// change opacity of #error div
header('HTTP/1.1 500 Captcha not entered correctly');
exit();
}
?>
当您检索ajax错误响应时,检查错误代码是否与您抛出的错误代码匹配(在本例中为500),然后在那里设置不透明度。