我正在为我开发的现有 REST 接口(interface)编写一个 Web 前端。到目前为止,我所有的 POST 和 GET 请求都工作正常,但是当我开始添加 PUT 请求时,现在我遇到了麻烦。
我将其归结为一个非常简单的测试用例,包含 2 个文件:
我的 JavaScript AJAX:
$.ajax({
url: "putTest.php",
type: 'PUT',
dataType: 'application/json',
data: { testVar: "test" },
contentType: 'application/json',
success: function( data ) {
},
failure: function( data ) {
}
});
还有我的 PHP 页面“putTest.php”:
<?php
var_dump($_SERVER);
?>
我希望像在 GET 或 POST 中一样,我的 QUERY_STRING 服务器变量将包含 testVar
这是我传递给它的数据。然而,事实并非如此,请查看响应:
["REQUEST_METHOD"]=> string(3) "PUT"
["QUERY_STRING"]=> string(0) ""
["REQUEST_URI"]=> string(25) "/test/putTest.php"
令我困惑的是,我使用了 Firefox 插件(HttpRequester)并发送了完全相同的参数和设置,并且响应完全按照预期返回。
为什么使用 jQuery AJAX 时不会遇到参数?
谢谢!
最佳答案
默认情况下php不支持DELETE/PUT ....
<?php
function getRequestParams() {
if($_SERVER['REQUEST_METHOD'] === "GET" || $_SERVER['REQUEST_METHOD'] === "POST") {
return $_REQUEST;
} else {
// For urlencode
parse_str(file_get_contents("php://input"), $var);
// or for json content
// $var = json_decode(file_get_contents("php://input"));
return $var;
}
}
$params = getRequestParams();
$params 将包含您提交的参数
解析方式取决于您提交的数据类型。
关于javascript - jQuery AJAX PUT 具有空的 QUERY_STRING 和 REQUEST PHP 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34316989/