如何存储对变量的http angularjs调用响应

Posted

技术标签:

【中文标题】如何存储对变量的http angularjs调用响应【英文标题】:How to store http angularjs call response to variable 【发布时间】:2021-07-18 17:12:06 【问题描述】:

我正在从 angularJS 函数进行 http get 调用。调用工作完美并得到响应,但我需要将响应存储在一个变量中,以便我可以在 $http 之外使用它。我试图保留 $scope.data.submissionFileID 但 alert($scope.data.submissionFileID) 说未定义。我也想让这个调用同步。我是新手,你能帮忙修改下面的代码吗?

     $scope.openWindow = function (e) 
        
        var url = '/Submission/GetSubmissionFileInfo?' + 'id=' + SubmissionID;
        $http.get(url).success(function (response) 
        $scope.data.submissionFileID = response; // response is an integer such as 123
        ); 
        alert($scope.data.submissionFileID); // This is undefined, what should I do to fix it?
        
        var content = "<h7><b>" + "Created at  </b>" + $scope.data.submissionFileID + "</h7><br><br>";
        
    

【问题讨论】:

***.com/q/14220321/3001761 我想让这个调用同步,因为函数的其他部分我想让我的代码等待。 你不能,因为网络请求基本上是异步的。 我怎样才能让我的代码等待,因为它正在准备内容并且无法等到响应返回。添加了我正在准备的内容和响应。 var content = "" + "创建于 " + $scope.data.submissionFileID + ""; 【参考方案1】:

需要考虑的是 alert(...) 在异步函数有机会完成之前被调用。一种选择是将响应发送到另一个设置 $scope 变量并执行您可能想要的任何其他功能的函数。

$scope.openWindow = function (e) 
var url = '/Submission/GetSubmissionFileInfo?' + 'id=' + SubmissionID;
   $http.get(url).success(function (response) 
      $scope.doTheThing(response);
   ); 


$scope.data = 

$scope.doTheThing = function(response) 
   $scope.data.submissionFileID = response;

html 模板文件中...

<div ng-if="!data.submissionFileID">Retrieving Data....</div>
<div ng-if="data.submissionFileID">
<h7><b>Created at </b> data.submissionFileID</h7>
</div>

【讨论】:

谢谢约翰。 doTheThing 在尝试设置响应时出现异常 - TypeError: Cannot set property 'submissionFileID' of undefined. 我猜 $scope.data 还不存在?我已经编辑了我的答案 是的!异常已修复。但是这里的事情变得有点棘手。如果我们在 openWindow 函数的调用之后放置一个 alert($scope.data.submissionFileID) ,由于异步调用,它仍然显示为未定义。代码不会等到它在 doTheThing 函数中设置。当我准备该内容时,我不得不使用 $scope.data.submissionFileID 。我在最后一行添加了那行代码。知道我们可以做些什么来解决它吗? 只需要一个占位符,用 ng-if 切换。我编辑了我的答案

以上是关于如何存储对变量的http angularjs调用响应的主要内容,如果未能解决你的问题,请参考以下文章

Angularjs 如何对 $http 调用进行正确的错误处理?

如何对 AngularJS $promise.then 进行单元测试

AngularJS - 如何在 $localStorage 中存储 JWT 令牌

AngularJs:如何对指令创建的动态元素应用表单验证

收到推送通知时如何更改范围变量

Django Angularjs如何调用具有特定ID的Http请求