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对象的最后一项,而不是完整列表。
我在哪里出了错?
当使用通过角的$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() { /*...*/ }));
我的$ _POST和$ _REQUEST变量在服务器端返回null –
@TommyAdeniyi [查看此问题和解答](http://*.com/questions/15485354/angular-http-post-to-php-and-undefined)并且让我知道这些是否适合你 – mhodges
将这段代码添加到我的serverside文件的顶部有诀窍: if($ _SERVER [ REQUEST_METHOD'] =='POST'&& empty($ _ POST)) $ _POST = json_decode(file_get_contents('php:// input'),true); –
我想这可能是因为你正在使用'params'方法:“POST”'。尝试在你的'$ http'配置对象上说'data:data'而不是params,看看它是否适用于你。 – mhodges
数据:数据完美。感谢mhodges我拉着头发 –
哦,我的天哪,你不知道我做了多少次同样的事情!哈哈很高兴为你工作!我将为未来的访问者发布一个答案 – mhodges