我正在努力让我的第一个ajax示例在我的MAMP上工作。 我的ajax.html看起来像:
<html>
<head>
<script src='ajax.js'></script>
</head>
<body onload = 'ajax()'>
<div id='test'></div>
</body>
</html>
我的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
Date Mon,05 Nov 2012 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避免浏览器bug X-Powered-By PHP / 5.4.4
但在回复文本中没有任何内容,我的HTML中没有任何变化。
有人可以帮帮我吗?
谢谢!
答案 0 :(得分:12)
您的问题是您正在尝试执行跨域请求。由于same origin policy,浏览器会阻止它。
标准解决方案是在PHP中设置CORS headers以允许这些请求。
例如:
<?php
header("Access-Control-Allow-Origin: *");
?>