变量在返回(身份不明) - AngularJS
在我的控制,我调用该函数变量在返回(身份不明) - AngularJS
function initialiseQuizContent(quizIdArray){
alert(getQuizService.getQuizContent(quizIdArray));
}
它调用的方法在下列服务
app.service('getQuizService', function($http) {
var quizArray;
this.setQuizArray = function(quiz){
quizArray = quiz;
};
this.getQuizArray = function(){
return quizArray;
};
this.getQuizContent = function(quizArray){
var $promise=$http.get("http://localhost/PHP/getQuizContent.php", {'quizArray': quizArray}); //send data to addQuiz.php
var theReturn;
$promise.then(function(msg){
//alert(msg.data);
theReturn = msg.data;
});
return theReturn;
};
});
但是结果我得到了警报是'未定义的'。我知道对PHP文件的调用工作正常,就好像我将'alert(msg.data)'放在承诺中一样,如上所述,然后返回正确的数组。我对此很陌生,所以原谅了任何愚蠢的问题,但似乎getQuizContent()方法返回的值是在执行PHP文件并收到msg.data之前完成的?导致未定义的变量'theResult'。
我将不胜感激任何帮助。由于
与$http
服务工作意味着与AJAX工作,响应是异步的,那为什么你有undefined
,我建议改变你的服务做这样的事情:
app.service('getQuizService', function($http) {
var quizArray;
this.setQuizArray = function(quiz){
quizArray = quiz;
};
this.getQuizArray = function(){
return quizArray;
};
this.getQuizContent = function(quizArray){
var promise=$http.post("http://localhost/PHP/getQuizContent.php",
{'quizArray': quizArray}).then(function (response) {
console.log(response);
return response.data;
});
return promise;
};});
然后在控制器做类似这个:
function initialiseQuizContent(quizIdArray){
getQuizService.getQuizContent(quizIdArray).then(function(data){
alert(data);
});
}
为什么额外的'var promise'变量? –
只是为了演示,展示我们如何使用诺言。 –
您可以在不将它分配给另一个变量的情况下返回承诺。 –
如果你需要获取数据,你为什么使用$ http.post而不是$ http.get? –
我的错误,仍然不起作用 – FootsieNG