Ajax调用没有发送到POST

时间:2015-04-16 14:05:12

标签: javascript php jquery ajax

我有一个包含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....

3 个答案:

答案 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);

}