【问题标题】:jQuery AJAX PUT has empty QUERY_STRING and REQUEST PHP variablesjQuery AJAX PUT 有空的 QUERY_STRING 和 REQUEST PHP 变量
【发布时间】:2015-12-16 16:18:30
【问题描述】:

我正在为我开发的现有 REST 接口编写 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时不会遇到参数?

谢谢!

【问题讨论】:

标签: javascript php jquery ajax put


【解决方案1】:

默认情况下 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 会有你提交的参数

您的解析方式取决于您提交时使用的数据类型。

【讨论】:

  • @KivakWolf NP,之前遇到过这个问题。
猜你喜欢
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多