我正在运行XAMPP和Apache。我有两个文件:
的index.php
<html>
<head>
<title>php script</title>
</head>
<body>
<?php
header("Access-Control-Allow-Origin: *");
echo "hello world";
?>
</body>
</html>
post.html
<html>
<head>
<title>html page</title>
</head>
<body>
<script>
var xhr;
xhr=new XMLHttpRequest();
xhr.open("POST", "http://localhost/demoApp/index.php", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send();
</script>
</body>
</html>
我希望 post.html 调用 index.php ,以便 post.html 显示&#34; hello world&#34;在HTML页面上。当我打开 index.php 时,我会看到&#34; hello world。&#34;
我也知道 post.html 正在调用 index.php ,因为我有其他脚本,当复制到 index.php 时会成功如果我打开 post.html ,请给我发电子邮件。
如果 post.html 确实在调用 index.php ,为什么我的回音没有显示在 post.html 上?
答案 0 :(得分:0)
post.html正在发出请求,但您实际上并没有对该请求做任何事情。使用ajax时,javascript正在进行调用,您需要明确告诉它您希望如何处理响应。
要简单地提醒远程内容,请聆听onreadystatechange
event,并在4(完成)时显示提醒:
xhr.onreadystatechange = function() {
if(xhr.readyState==4) {
alert(xhr.responseText);
}
}
如果您希望将数据附加到任何地方(不使用jQuery),我建议分配带有ID的div,并附加或分配数据:
的index.php:
<?php
header("Access-Control-Allow-Origin: *");
echo "hello world";
?>
post.html:
<html>
<head>
<title>html page</title>
</head>
<body>
<div id="remote_content"></div>
<script>
var xhr;
xhr=new XMLHttpRequest();
xhr.open("POST", "http://localhost/demoApp/index.php", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if(xhr.readyState !== 4)
return;
document.getElementById('remote_content').innerHTML = xhr.responseText;
}
xhr.send();
</script>
</body>
</html>