jQueryAJAX调用返回整个PHP文件


jQuery AJAX call returns entire PHP file

几天来,我一直被这件事难住了,看了很多不同的帖子,运气都不好。

我使用jQuery进行AJAX调用,如下所示:

console.log("Sending post request");
  var postData = {
    "function": "connectToGame",
    "name" : name,
  };
  console.log(postData);
  $.ajax({
    type: "POST",
    url: 'http://localhost:8000/Cordova/server/database.php',
    data: postData,
    dataType: 'text',
    success: function(data)
    {
      console.log("AJAX Success! See return:");
      console.log(data);
      var id = data[0];              //get id
      console.log('Server returned: ' + id + ' as the id');
    },
    error: function(e){
      console.log("AJAX Failure!");
      console.log(e);
    }
  });

在删除了大量试图缩小问题范围的代码后,我的server/database.php目前看起来是这样的:

<?php
echo "1";
?>

在进行AJAX调用后,控制台显示如下:

database.js:21 Sending post request
database.js:26 Object {function: "connectToGame", name: ""}
database.js:34 AJAX Success! See return:
database.js:35 <?php
echo "1";
exit;
?>
database.js:38 Server returned: < as the id

我完全不明白为什么AJAX调用会返回整个PHP文件,如果有任何帮助,我将不胜感激。

您似乎没有正确配置Web服务器来解释PHP文件,并且它在没有任何处理的情况下返回其文本内容。不幸的是,您还没有提供有关服务器端设置的任何详细信息,因此很难提供帮助。但是,如果您使用的是Apache,您可以查看mod_php,以便服务器评估您的PHP脚本,并将结果返回给客户端。因此,在尝试对http://localhost:8000/Cordova/server/database.php进行任何客户端调用之前,请确保它有一个可用的服务器端脚本

在我的案例中,当我将php7.4升级到php8.1:时,也发生了同样的问题

在apache2中启用PHP;解决了我的问题。

a2enmod或a2dismod按名称启用/禁用模块。

从终端;执行以下cmds解决了我的问题sudo a2enmod php8.1&amp;sudo systemctl重启apache2

你也可以试试这个;参考编号:启用PHP Apache2