对PHP的Ajax调用没有返回任何内容

McD*_*eam 4 javascript php ajax

我正在努力让我的第一个ajax示例在我的MAMP上工作.我的ajax.html看起来像:

<html>
<head>
<script src='ajax.js'></script>
</head>
<body onload = 'ajax()'>
<div id='test'></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的ajax.js看起来像:


function ajax()
{
>>var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","http://localhost:8888/ajax.php",true); xmlhttp.send(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("test").innerHTML=xmlhttp.responseText; } } }

我的ajax.php看起来像:

回声"你好世界";

我从firebug中检测到响应头:

响应标头
连接保持活动
内容长度11
内容类型文本/ html
日期星期一,2012年11月5日18:57:46 GMT
保持活动超时= 5,最大= 99
服务器Apache/2.2.22(Unix)mod_ssl/2.2 .22 OpenSSL/0.9.8r DAV/2 PHP/5.4.4
X-Pad避免浏览器错误
X-Powered-By PHP/5.4.4

但没有任何回复文本,我的HTML没有任何改变.

有人可以帮帮我吗?

谢谢!

Den*_*ret 12

您的问题是您正在尝试执行跨域请求.由于相同的原始策略,浏览器会阻止它.

标准解决方案是在PHP中设置CORS头以允许这些请求.

例如 :

<?php
header("Access-Control-Allow-Origin: *");
?>
Run Code Online (Sandbox Code Playgroud)

  • 你怎么能从给出的信息中知道这一点?顺便说一句,我是出于好奇,而不是出于批评. (2认同)