【问题标题】:Could not execute Ajax query on new server无法在新服务器上执行 Ajax 查询
【发布时间】:2017-03-14 19:56:59
【问题描述】:

我的 HTML 文件中有一个简单的 Ajax 查询

<script type="text/javascript" src="//code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
    $.ajax({
       url: "rnd.php"
    }).done(function(data) {
       console.log(data);
    });
</script>

下面是函数rnd.php。这只是一个示例,需要针对更复杂的应用进行修改。

<?php
$res = (float)rand()/(float)getrandmax();
echo "$res"
?>

它在以前的 AWS 服务器上工作,但是当我尝试配置新服务器时,Ajax 返回 PHP 文件的内容(在 Chrome 调试控制台上)而不是执行它。

【问题讨论】:

  • 那是因为你告诉 ajax 这样做! console.log(data); 会将输出发送到控制台日志

标签: php ajax apache amazon-web-services ubuntu


【解决方案1】:

我在许多论坛上搜索了答案并在 AWS 上创建了 3 个新服务器。我在任何地方都找不到答案。我最终将这个配置用于 Ubuntu (https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04)。我认为不同之处在于需要在 Apache 配置文件中正确设置服务器名称,否则即使 PHP 工作,Ajax 调用也无法工作。我在我的 apache 配置文件(Ubuntu 中的 /etc/apache2/apache2.conf)末尾添加了以下行

ServerName server_domain_or_IP

我自己尝试过使用公共 IP。然后我重启了服务器

sudo /etc/init.d/apache2 restart

请注意,如果在客户端使用 Chrome,退出 Chrome 是不够的,您需要清除缓存。我困惑了 10 分钟,为什么它现在可以在 Safari 中运行,但在 Chrome 中却不行。

【讨论】:

    【解决方案2】:

    它不应该与 conf 文件中的实际 ServerName 有任何关系,尽管您显然需要确保它已正确配置以便您可以访问它。

    您需要做的是确保在您的服务器上安装并启用了 PHP / Apache2 模块。例如,如果我正在运行 Apache2 和 PHP 5.6,我将安装以下内容:

    sudo apt-get install libapache2-mod-php5
    

    【讨论】:

    • EC2 实例最初不在弹性(静态)IP 上。有效。然后我把它移到一个弹性 IP 上,它就停止了工作。然后我更改了 ServerName 以匹配 Elastic IP 并且它再次工作。这可能都是巧合,Chrome 缓存在某些时候没有被清除但仍然存在。
    猜你喜欢
    • 2012-02-16
    • 2017-08-11
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2011-09-01
    相关资源
    最近更新 更多