我正在尝试显示警报,但它不起作用,不知道我错过了什么,请指出:
//my.php
if(mail($to, $subject, $message, $headers)) {
$message = "Mail sent.";
echo "<script type='text/javascript'>alert('$message');</script>";
}
else {
echo json_encode(['success'=>false]);
}
上面应该在浏览器上显示警告,但它根本没有显示任何内容。但是它会在控制台上打印,任何人都知道这里有什么问题吗?
更新
//myPhpCall:
<script type="text/javascript">
$(document).ready(function() {
$("#myForm").on('submit', function(event) {
event.preventDefault();
var formData = $(this).serialize();
$.ajax({
type: 'POST',
url: 'sendmail.php',
dataType: "json",
data: formData,
success: function(response) {
alert("Mail sent"); // not getting called
},
error: function(xhr, status, error) {
console.log(xhr);
}
});
});
});
</script>
答案 0 :(得分:2)
也许你正在其他地方做某种output escaping?
答案 1 :(得分:1)
只需将结果返回给jQuery并从那里发出警报。
// if mail was sent
echo json_encode(["success" => true]);
然后在ajax
var res = $.parseJSON(data);
if (res.success == true) {
alert("Mail sent");
}else {
//code here
}
<强>更新强>
$('#submit-button').on('click', function(e){
e.preventDefault();
$.post('sendmail.php', $('#myForm').serialize(), function(data){
var res = $.parseJSON(data);
if (res.result == true) {
alert('Mail sent');
}else if(res.result == false) {
alert('Mail not sent');
}
});
});
答案 2 :(得分:0)
在my.php中尝试关注 -
<?php
if(mail($to, $subject, $message, $headers)) { $message = "Mail sent.";
?>
<script type='text/javascript'>alert(<?php echo $message ?> );</script>
<?php } else { echo json_encode(['success'=>false]); }
?>