gpt4 book ai didi

javascript - 变量未返回(未识别) - AngularJS

转载 作者:行者123 更新时间:2023-12-02 17:34:51 25 4
gpt4 key购买 nike

在我的 Controller 中,我正在调用该函数

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)”放入 promise 中一样,如上面注释的那样,然后返回正确的数组。我对此很陌生,所以请原谅任何愚蠢的问题,但似乎为“getQuizContent()”方法返回的值是在执行 PHP 文件并收到 msg.data 之前完成的?导致 undefined variable “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;

};});

然后在 Controller 中执行如下操作:

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

关于javascript - 变量未返回(未识别) - AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22701434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com