我有一个包含AJAX的函数来发送从localStorage检索到的JSON对象。出于某种原因,在我的PHP脚本中,它永远不会在$ _POST变量中显示任何内容,尽管我非常确定AJAX调用是否成功完成。我的代码如下:
javascript:
function processResults(){
var finalResults = localStorage.getItem('results');
finalResults = JSON.stringify(finalResults);
$.ajax({
type: 'POST',
url: '../DB_add.php',
dataType: 'json',
data: {'answers': finalResults},
success: function(data){
console.log(data);
console.log('Success');
}
})
}
php脚本:
if(isset($_POST['answers'])){
$obj = json_decode($_POST['answers']);
print_r ($obj);
}
任何帮助,为什么这不起作用将不胜感激。谢谢。
到目前为止,我已经尝试了所有选项,似乎没有任何工作。我完全失去了。
对于那些询问,finalResult变量的结构为:
[{"answer":0,"elapsed_time":1378,"stimulus_id":"8","task_id":1},{"answer":1,"elapsed_time":157,"stimulus_id":"2","task_id":1},{"answer":1,"elapsed_time":169,"stimulus_id":"1","task_id":1}, etc....
答案 0 :(得分:1)
dataType: 'json'
要求您在PHP中输出的内容(data
部分中接受的success
)必须是有效的json。
因此有效的json将在PHP中使用:
if(isset($_POST['answers'])){
echo $_POST['answers'];
}
无需解码,已经是json字符串。没有var_dump
,没有print_r
答案 1 :(得分:-1)
我会删除Ajax请求中的dataType
属性并修改数据结构:
$.ajax({
type: 'POST',
url: '../DB_add.php',
data: 'answers='&finalResults,
success: function(data){
console.log(data);
console.log('Success');
}
})
第二次,我将测试我在PHP方面收到的内容:
if(isset($_POST['answers'])){
var_dump(json_encode($_POST['answers']));
}
答案 2 :(得分:-1)
如果您使用dataType: 'json',
JSON.stringify
JS。
function processResults(){
var finalResults = localStorage.getItem('results');
finalResults = JSON.stringify(finalResults);
$.ajax({
type: 'POST',
url: '../DB_add.php',
data: {'answers': finalResults},
success: function(data){
console.log(data);
console.log('Success');
}
})
}
PHP代码:
if (!empty($_REQUEST['answers'])) {
$answers = json_decode(stripslashes($request['answers']));
var_dump($answers);
}