PHP警报不会显示

时间:2017-10-26 14:06:48

标签: javascript php jquery

我试图将警报显示为测试,但我无法使其正常工作。 在HTML页面上我有:

<body onload="DBReadNews()">
...code
<script src="jquery.js"></script>
<script src="myJs.js"></script>

Javascript:

function DBReadNews(){
    $.ajax({
        type: "POST",
        url: "newsPhpRead.php",
        datatype: "text",
        success: function() {
        }
    });
}

PHP:

<?php
     echo "<script language='javascript'>alert('test!');</script>";
?>

3 个答案:

答案 0 :(得分:2)

这是因为您没有处理来自服务器的响应。试试这种方式:

function DBReadNews(){
    $.ajax({
        type: "POST",
        url: "newsPhpRead.php",
        datatype: "text",
        success: function(server_response){
            alert(server_response);
        }
    });
}

并将您的php脚本更改为:

<?php
     echo "test";
?>

答案 1 :(得分:0)

您无法回复此类提醒。您必须将它放在成功处理程序中。

function DBReadNews(){
$.ajax({
    type: "POST",
    url: "newsPhpRead.php",
    datatype: "text",
    success: function() {
      alert('Test!');
    }
});
}

答案 2 :(得分:0)

只有从AJAX调用返回纯内容时,提供的答案才有效。使用我的解决方案,您可以执行响应中返回的任何JavaScript代码。

问题是没有使用服务器的响应。相反,它应该像这样注入DOM:

档案: index.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body onload="DBReadNews()">
    <script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
    <script src="myjs.js"></script>
</body>

档案: myjs.js

function DBReadNews(){
    $.ajax({
        type: "POST",
        url: "newsphpread.php",
        datatype: "text",
        success: function(response) {
            $('body').prepend(response);
        }
    });
}

档案: newsphpread.php

<?php echo "<script>alert('test!');</script>"; ?>

在浏览器中打开 index.html 时,会向newsphpread.php发送一个AJAX请求。此请求的响应将注入,并执行alert()(或其他javascript代码)

注意:这应该在Web服务器上运行,即索引文件应该通过http http://localhost/index.html 访问,而不是作为文件文件访问: ///var/www/alert.html。如果使用file://打开index.html,您将在控制台中收到错误“仅支持协议方案的交叉源请求:http,数据,chrome,chrome-extension,https。”