ajax中的JSON字符串请求内容类型application / formdata vs application / json

时间:2014-12-10 18:28:22

标签: php ajax json

这可能是一个非常基本或愚蠢的问题,但它确实是一个深刻的概念问题。

如果我有像(客户端)那样的ajax发布请求:

var response = {};
        response['key'] =  value;
        response['key2'] = value2;

$.ajax({
            type: "POST",
            url: "xyz.php",
            data: JSON.stringify(response),
            dataType: "html",
            success: function (result) {}
        });

在服务器端我做

$a = json_decode($data, true);

我可以$ a ['abc']并继续我的工作。

问题是因为我没有在ajax请求中将contentType指定为application / json,jquery会将数据作为application / form-data发送,这意味着我应该通过$ _POST ['data']访问它并且不要执行json_decode 。正确?

Vise Versa 如果我在客户端发送带有内容类型application / json的json字符串,那么在服务器端我可以通过json_decode而不是$ _POST []访问它。正确?

我对这个基本问题感到很困惑。任何人都可以对此提供一个很好的解释???

注意:我的服务器返回json编码数据。我使用纤薄的框架,所以我可以访问帖子正文$ app-> request-> getBody();

1 个答案:

答案 0 :(得分:0)

如果您希望通过服务器端的单个变量访问所有数据,则需要执行以下操作:

JS:

$.ajax({
        type: "POST",
        url: "xyz.php",
        data: {'data', JSON.stringify(response)},
        dataType: "html",
        success: function (result) {}
    });

PHP:

$a = json_decode($_POST['data'], true);