我已经查看了与我的问题相关的几个问题/答案组合,但我尝试过的建议尚未奏效。
这是我的AJAX请求:
$('#submitRequest').on('click', function() {
// package everything to get it ready for transfer
var textSamples = JSON.stringify(packTextStyles());
var swatches = JSON.stringify(packSwatches());
var clientInfo = JSON.stringify(packClientInfo());
$.ajax ({
type: 'post',
url: 'classes/requestHandler.php',
//headers: {'Content-Type': 'application/json'},
data: {
typeSamples: textSamples,
swatchSamples: swatches,
userInfo: clientInfo
},
success: function(data) {
if (data === 'added') {
alert('ok');
}
else {
alert(data);
return false;
}
}
});
return false;
});
三个变量textSamples
,swatches
和clientInfo
都是数组。 textSamples
数组包含八个对象,每个对象都有五个属性,因此它是一个很好的数据块。
我的问题是var_dump($_POST)
返回一个空数组,尝试json_decode($_POST['typeSamples'])
的任何尝试都给我一个PHP侧未定义索引的错误。
以下是Chrome开发工具中网络标签上标题的屏幕截图:
所以$ _POST正在获得一些东西,但我不知道它会去哪里。一些问题:
我是否需要将headers: {'Content-Type':
'application/x-www-form-urlencoded'}
或headers: {'Content-Type':
'application/json'}
放入AJAX中,因为我使用了JSON.stringify()
?
因为我使用了AJAX,所以我没有将method="post"
action="something.php"
放在form
标记和input
标记中
没有name
属性。 Submit
按钮没有
type="submit"
。那有关系吗?
编辑:如果重要,我使用的是jQuery 1.11.1和PHP 5.4.12
EDIT2:半完成的PHP:
<?php
$reqGetter = new RequestReceiver;
$reqGetter->checkInput();
class RequestReceiver{
// public function __construct() {
// $textSamples = json_decode($_POST['typeSamples']);
// }
public function checkInput() {
if (!empty($_POST)) {
echo('added');
$typeSamples = json_decode($_POST['typeSamples'], true);
print_r($typeSamples);
} else {
echo('failed');
}
}
}