【发布时间】:2014-08-06 17:22:41
【问题描述】:
我有一个 javascript 函数,可以从一些输入字段和复选框中收集数据。
我想将该数据发送到 PHP 文件,然后从数据库返回一些信息。
但是我在 PHP 中获取 POST 数据时遇到问题,所以这里我只关注这个问题,不会处理任何数据库。
在 HTML 表单中收集的数据在 Javascript 对象中返回,我使用 JSON.stringify(data) 将其转换为 Json 并得到:
{"motscle":[""],"categories":[1,2,3],"prix":[{"min":0,"max":50},{"min":50,"max":100},{"min":100,"max":200},{"min":200,"max":500},{"min":500,"max":1000},{"min":1000,"max":2000}],"dimensions":{"longueur":"","largeur":"","hauteur":""}}
您可以在 http://jsonformatter.curiousconcept.com/ 上对其进行测试,以查看展开后的表单并查看它是有效的 JSON。所以,我认为问题不在这里。
然后我有一个类似的 ajax 调用用于测试目的(var theJSON 包含上面的 JSON 字符串):
$.ajax({
url: 'post.php',
data: theJSON ,
dataType: 'json',
error: function(){
console.log("Error in ajax request");
},
success: function(data)
{
console.log("Success of ajax request");
console.log(data);
}
});
我的测试PHP文件post.php是这样的:
<?php
header('Content-Type: application/json; charset=utf-8');
echo json_encode($_POST);
?>
ajax 调用没问题,因为我在 js 控制台中得到了它:
Success of ajax request
[]
但是,如您所见,我还有一个空数组 []。我期待得到 PHP 应该发送给我的 $_POST 内容。
我不知道我错在哪里。为什么我没有得到$_POST 中的数据?
【问题讨论】:
-
打开浏览器的开发工具并在控制台中观察请求/响应。您应该看到发送的数据和返回的数据。这是您进行故障排除的起点。
-
回显
$_GET并查看它是否为空。如果正在填充 GET,请将属性type: "POST"添加到您的 ajax 调用中。 -
@Rickkwa 这就是问题所在,谢谢