Angular JSON post只发送json数组的一个项目

问题描述:

我写了一个有角度的测验,我试图将测验结果发送到数据库进行处理。我的$ http呼叫如下:Angular JSON post只发送json数组的一个项目

function saveQuiz() { 
     quizObj.isSaving = true; 
     var data = { 
      id: quiz_id, 
      action: 'quiz_data', 
      part: 'save_quiz', 
      score: quizObj.score, 
      passed: quizObj.passed, 
      completed: quizObj.completed, 
      percentage: quizObj.perc, 
      time_spent: $filter('formatTimer')(quizObj.counter), 
      questions: quizObj.quiz.questions 
     }; 
     console.log(data); 
     $http({ 
       url: quizapp.ajax_url, 
       method: "POST", 
       params: data 
      }) 
      .then(function(response) { 
        console.log(response.data); 

        quizObj.isSaving = false; 

       }, 
       function(response) { // optional 
        // failed 
        console.log(response); 
       }); 
    } 

注意我传递了一个json问题数组作为quizObj.quiz.questions。 服务器端的问题是$ _POST ['questions']求值到quizObj.quiz.questions json对象的最后一项,而不是完整列表。

我在哪里出了错?

+0

我想这可能是因为你正在使用'params'方法:“POST”'。尝试在你的'$ http'配置对象上说'data:data'而不是params,看看它是否适用于你。 – mhodges

+0

数据:数据完美。感谢mhodges我拉着头发 –

+0

哦,我的天哪,你不知道我做了多少次同样的事情!哈哈很高兴为你工作!我将为未来的访问者发布一个答案 – mhodges

当使用通过角的$http服务,data去与method: "POST"params去与method: "GET"

更改你的配置对象的属性要传递到$http服务,像这样:

$http({ 
    url: quizapp.ajax_url, 
    method: "POST", 
    data: data // <-- data here, not params since using POST 
}).then(function() { /*...*/ })); 
+0

我的$ _POST和$ _REQUEST变量在服务器端返回null –

+0

@TommyAdeniyi [查看此问题和解答](http://*.com/questions/15485354/angular-http-post-to-php-and-undefined)并且让我知道这些是否适合你 – mhodges

+1

将这段代码添加到我的serverside文件的顶部有诀窍: if($ _SERVER [ REQUEST_METHOD'] =='POST'&& empty($ _ POST)) $ _POST = json_decode(file_get_contents('php:// input'),true); –