【问题标题】:Apache Server PHP works in address bar, but not when using AJAX from Javascript?Apache Server PHP 在地址栏中工作,但在 Javascript 中使用 AJAX 时不能工作?
【发布时间】:2020-04-21 16:42:26
【问题描述】:

我在一个 EC2 实例上创建了一个 Apache 服务器,我用它来托管一个 mySQL 数据库和一些 PHP 脚本来访问该数据库。我已经在 Apache 服务器上安装了我 认为 所需的所有依赖项,以至于当我编写 PHP 脚本并使用地址栏通过 Web 浏览器访问它时,PHP 脚本运行,查询我的数据库并向网络浏览器返回正确的信息。

但是,脚本的目标是供 Javascript 应用程序使用,以通过 AJAX 访问数据库,特别是 Captivate 课程。当我尝试使用 AJAX 访问脚本时,没有任何反应。 Captivate 提供的关于错误日志的信息非常少,所以我尝试使用其他服务来检查我的 javascript 以确保它正常工作,例如 jsfiddle.net,但似乎 Javascript 不是问题。这是我的代码:

function httpGet(theUrl)
{
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
    xmlHttp.send();
    alert(xmlHttp.responseText);
}

我的目标不一定是使用 Alert 将代码发布到屏幕上,我使用它只是为了检查我是否得到了任何东西。 theUrl 指向另一端名为 simpleecho.php 的 php 脚本:

<?php
    echo "test";
?>

我有更复杂的 PHP 脚本,但它们也都可以在浏览器中运行。如果我在 Web 浏览器的地址栏中访问 theUrl,我会看到“测试”。 我尝试从异步请求更改为同步,我确信 Captivate 的 javascript 可以使用 jQuery 相关代码,我尝试了 8 种不同的方式将 AJAX 请求作为 POST 和 GET 发送,但我不确定我错过了什么.我的直觉说 Apache 服务器配置了一些错误,导致它无法响应地址栏之外的特定请求,但我对配置我的 httpd.conf 文件知之甚少,无法知道我在寻找什么。

感谢所有提示和学习!

【问题讨论】:

  • 你打开浏览器的开发者工具了吗?检查控制台的错误消息并观察那里的 AJAX 请求/响应。
  • Apache 配置不会停止请求,除非出现 CORS 错误。
  • @JayBlanchard 感谢您提供有关使用开发人员工具的提示,在 jsfiddle.net 上,请求因“加载混合的活动内容”而停止。从我正在阅读的内容来看,这似乎是因为我正在通过 http 而不是 https 执行 XMLHttpRequest。但是,我不确定如何更改我的 Apache 服务器以提供 HTTPS 地址而不仅仅是 HTTP。你知道吗?
  • 是的 - 您至少需要一个自签名证书才能在您的 Apache 服务器上允许 SSL。所以这就是你的下一个研究领域。

标签: javascript php ajax apache adobe-captivate


【解决方案1】:

这个问题的答案是不允许我使用 HTTP 与 apache 服务器通信,并且必须使用 SSL 保护它才能使用 HTTPS。我尝试使用自签名证书,但自签名版本也不允许用于 Captivate 课程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 2012-11-13
    • 2018-03-23
    • 1970-01-01
    • 2013-06-29
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多