alert()不能在PHP上运行,而是在控制台上打印

时间:2016-11-25 16:18:32

标签: javascript php

我正在尝试显示警报,但它不起作用,不知道我错过了什么,请指出:

//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>

3 个答案:

答案 0 :(得分:2)

也许你正在其他地方做某种output escaping

答案 1 :(得分:1)

只需将结果返回给jQuery并从那里发出警报。

// if mail was sent
echo json_encode(["success" => true]);

然后在ajax

中的jQuery中
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]); }
?>