【发布时间】: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";
?>
问题:
为什么当我使用
type = 'POST'时它给了我 404(第一个场景中响应的第一行),而当我使用type = 'GET'时却正常运行?为什么第二种情况会返回整个 PHP 文件内容,而不仅仅是“哈哈”(不带引号)。
【问题讨论】:
-
对第二个问题:你得到了php文件的内容意味着php没有在你的服务器上或者给定的目录中激活。对于第一个问题:这表明该目录中不允许 POST 请求。如果未启用 PHP(或其他处理 POST 请求的服务器端语言),则允许 POST 请求没有意义,因此您需要做的第一件事是启用 php。
-
@t.niese 那么我该如何解决这个问题呢?具体来说,如何配置以便在此目录中允许 POST 请求?此 IDE 中默认启用 PHP。非常感谢您的帮助。
-
Php 未在服务器上启用,或者至少在您请求
connection.php文件的目录中启用,否则您将看不到<?php。正如我所说,您首先需要为该目录启用 php,POST问题是后续问题。您需要如何执行此操作取决于您的connect.php应该运行的服务器。