对 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:80localhost:8888 是不同的域(对于这个问题),就像otherdomain.com:80localhost:8888。因此,如果我正确地回答了您的问题,则您无需再获得另一台服务器。

以上是关于对 PHP 的 Ajax 调用没有返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章

使用 Phonegap、AJAX、PHP 和 mySQL 登录不工作

Ajax 调用未返回

使用jQuery的ajax获取带参数的请求,返回页面内容

从 PHP 调用 node.js 脚本不返回任何内容

MSSQL程序没有通过php查询返回任何内容

MVC Ajax 表单返回 View 的全部内容