对 PHP 的 Ajax 调用没有返回任何内容
Posted
技术标签:
【中文标题】对 PHP 的 Ajax 调用没有返回任何内容【英文标题】:Ajax call to PHP is returning nothing 【发布时间】:2012-10-25 16:23:11 【问题描述】:我正在尝试让我的第一个 ajax 示例在我的 MAMP 上运行。 我的 ajax.html 看起来像:
<html>
<head>
<script src='ajax.js'></script>
</head>
<body onload = 'ajax()'>
<div id='test'></div>
</body>
</html>
我的 ajax.js 看起来像:
函数 ajax() >>var xmlhttp;if (window.XMLHttpRequest) // IE7+、Firefox、Chrome、Opera、Safari 的代码 xmlhttp=新的 XMLHttpRequest(); 别的 // IE6、IE5的代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("GET","http://localhost:8888/ajax.php",true); xmlhttp.send(); xmlhttp.onreadystatechange=函数() 如果(xmlhttp.readyState==4 && xmlhttp.status==200) document.getElementById("test").innerHTML=xmlhttp.responseText;我的 ajax.php 看起来像:
echo 'hello world';
我检测到来自 firebug 的响应标头:
响应标头 连接保持活动 内容长度 11 内容类型 text/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 中也没有任何变化。
有人可以帮帮我吗?
谢谢!
【问题讨论】:
【参考方案1】:您的问题是您正在尝试执行跨域请求。由于same origin policy,浏览器阻止了它。
标准解决方案是在您的 PHP 中设置 CORS headers 以允许这些请求。
例如:
<?php
header("Access-Control-Allow-Origin: *");
?>
【讨论】:
你怎么可能从给出的信息中知道这一点?顺便说一句,我是出于好奇而不是批评。 因为("GET","http://localhost:8888/
。 PHP页面不可能在8888上提供。
啊,同源也适用于端口?直到...谢谢。
它适用于端口,更糟糕的是:file://
就像一种 NaN:在file://
中提供的页面甚至与它自身的来源不同。
我不确定你的意思,但localhost:80
和localhost:8888
是不同的域(对于这个问题),就像otherdomain.com:80
和localhost:8888
。因此,如果我正确地回答了您的问题,则您无需再获得另一台服务器。以上是关于对 PHP 的 Ajax 调用没有返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章