变量没有被返回(未知)- AngularJS


variable not being returned (unidentified) - AngularJS

在我的控制器中,我调用函数

function initialiseQuizContent(quizIdArray){
   alert(getQuizService.getQuizContent(quizIdArray));
}

调用以下服务

中的a方法
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)'放在promise中一样,如上所述,然后返回正确的数组。我是新手,所以请原谅任何愚蠢的问题,但似乎是为'getQuizContent()'方法返回的值是在PHP文件执行和msg之前完成的。收到数据了吗?导致未定义的变量'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);
    });
}