这可能是一个非常基本或愚蠢的问题,但它确实是一个深刻的概念问题。
如果我有像(客户端)那样的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();
答案 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);