【问题标题】:Ajax call to PHP is returning nothing对 PHP 的 Ajax 调用没有返回任何内容
【发布时间】: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 中也没有任何变化。

有人可以帮帮我吗?

谢谢!

【问题讨论】:

    标签: php javascript ajax


    【解决方案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。因此,如果我正确地回答了您的问题,则您无需再获得另一台服务器。
    猜你喜欢
    • 2020-01-27
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    相关资源
    最近更新 更多