我试图将警报显示为测试,但我无法使其正常工作。 在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>";
?>
答案 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。”