【问题标题】:Jquery AJAX yields different result depending on GET or POSTJquery AJAX 根据 GET 或 POST 产生不同的结果
【发布时间】:2016-08-14 07:57:17
【问题描述】:

感谢您抽出宝贵时间帮助我。

情况:

我在 Cloud9 (http://c9.io) 上使用 jQuery 通过 AJAX 获取一些数据时遇到了一些问题。所有文件都在同一个目录中。

代码如下:

PHP (connection.php):

<?PHP
    echo "haha";
?>

Javascript:

var testAjax = function(){
    $.ajax({
        url : 'connection.php',
        type : 'POST',
        data : {'name' : 'Ben'},
        success : function(response){
            console.log(response);
        },
        error: function(jqXHR, textStatus, errorThrown){
            console.log('jqXHR.responseText:  ' + jqXHR.responseText);
            console.log('jqXHR.responseXML :  ' + jqXHR.responseXML);
            console.log('textStatus:   ' +  textStatus);
            console.log('errorThrown:   ' + errorThrown);
        },
        dataType : 'text' //expected data type
    });
}

在这里,我有 type = 'POST' 。当我在控制台上运行 testAjax() 时,它给了我以下信息:

jquery-3.1.0.js:9392 POST https://(root address)/connection.php 404 (Not Found)send @ jquery-3.1.0.js:9392ajax @ jquery-3.1.0.js:8999testAjax @ script.js:63(anonymous function) @ VM3304:1
script.js:71 jqXHR.responseText:  Cannot POST /jkeezie/homework-checker/WIP/connection.php

script.js:72 jqXHR.responseXML :  undefined
script.js:73 textStatus:   error
script.js:74 errorThrown:   Not Found

但是,当我将其更改为 type = 'GET',并去掉 data : {'name' : 'Ben'}, 并在控制台上运行同一行时,我得到了这个:

<?PHP
    echo "haha";
?>

问题:

  1. 为什么当我使用 type = 'POST' 时它给了我 404(第一个场景中响应的第一行),而当我使用 type = 'GET' 时却正常运行?

  2. 为什么第二种情况会返回整个 PHP 文件内容,而不仅仅是“哈哈”(不带引号)。

【问题讨论】:

  • 对第二个问题:你得到了php文件的内容意味着php没有在你的服务器上或者给定的目录中激活。对于第一个问题:这表明该目录中不允许 POST 请求。如果未启用 PHP(或其他处理 POST 请求的服务器端语言),则允许 POST 请求没有意义,因此您需要做的第一件事是启用 php。
  • @t.niese 那么我该如何解决这个问题呢?具体来说,如何配置以便在此目录中允许 POST 请求?此 IDE 中默认启用 PHP。非常感谢您的帮助。
  • Php 在服务器上启用,或者至少在您请求 connection.php 文件的目录中启用,否则您将看不到 &lt;?php。正如我所说,您首先需要为该目录​​启用 php,POST 问题是后续问题。您需要如何执行此操作取决于您的 connect.php 应该运行的服务器。

标签: jquery ajax cloud9


【解决方案1】:

这两个问题的答案是您正在通过GET 请求将connection.php 文件下载到服务器,而您期望服务器运行connection.php 脚本。

您正在运行任何网络服务器吗?你必须设置一个支持 PHP 来处理这个请求,正如你所期望的那样,apachenginx 最受欢迎(而 nginx 更容易)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2018-05-23
    • 2017-09-11
    • 2020-03-14
    相关资源
    最近更新 更多