javascript - jQuery AJAX PUT 具有空的 QUERY_STRING 和 REQUEST PHP 变量

标签 javascript php jquery ajax put

我正在为我开发的现有 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/

相关文章:

javascript - jQuery 插件 : Add method with . 每个

javascript - 事件处理程序的幕后情况是怎样的?它适用于其他功能吗?

php - unique_with laravel :It doesnt work if a particular row is ignored using id

php - Laravel 的能力在争论中是多态的吗?

javascript - 禁用的按钮颜色在 IE9 中未正确呈现

javascript - 单击链接后展开的移动导航栏不会折叠

javascript - 尝试添加链接以打开指向随机单词数组的 'steam://run/' 链接

javascript - d3 为数组中的每个对象创建路径,而不是使用每个对象的 x 和 y 属性

php - 将数据添加到表形式 sql 并存储回新数据库

javascript - 如何像按钮表单输入一样动态排列 html 元素