2017-04-12 14 views
1

私はアンケートのクイズを書いて、処理のためにクイズの結果をデータベースに送信しようとしています。私の$ httpの呼び出しは次のようになります。角型JSON投稿のみjson配列の1項目を送信

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

'method:" POST "で' params'を使っている可能性があります。あなたの '$ http'設定オブジェクトにparamsの代わりに' data:data'と言って、それがあなたのために働くかどうか確認してください。 – mhodges

+0

データ:データは完璧に処理されました。ありがとうmhodges私は髪を引っ張っていた –

+0

ああ私のおかげで、男あなたは何回何回同じことをやったかわからない!ハハはあなたのために働いてうれしい!私は将来の訪問者のための答えを掲示するでしょう – mhodges

答えて

0

角度によって$httpサービスを使用して、datamethod: "POST"となり、paramsは、あなたのconfigオブジェクトのプロパティは、あなたがそうのよう$httpサービスに渡しているmethod: "GET"

変更で行く:私は思う

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

serversideのmy $ _POSTと$ _REQUEST変数はnullを返しています –

+0

@TommyAdeniyi [http://stackoverflow.com]/question/15485354/angular-http-post-to-php-and-undefined)そして、あなたのためにそれらが働いているかどうか教えてください – mhodges

+1

このコードスニペットをサーバサイドファイルの先頭に追加すると、トリックが起こりました: if($ _SERVER [ ($ _ POST) $ _POST = json_decode(file_get_contents( 'php:// input')、true); –

関連する問題