AngularJS $ http成功但不起作用

时间:2014-05-09 23:26:05

标签: angularjs angularjs-http

我正在使用angularJS和SLIM PHP restful服务器,PHP服务正在运行,实际上我已经使用$ http.get()在这个应用程序中没有问题... 但是现在发生了一件奇怪的事情,我以与其他人相同的方式创建了一个新函数,并且它得到了.success(函数(数据))没有问题,我实际上可以使用console.log(数据)并显示正确的结果,但是当.success()完成并返回时,我收到一个未定义的结果。 ps:浏览器控制台没有错误。

    var markerOptions = [];
    loadMarkers();
    console.log(markerOptions);

    function loadMarkers() {
    $http.get('http://localhost/rest/getMarkers').success(function(response){
            console.log(response);
            markerOptions = response;
    });
}
  • Console.log()里面成功()返回正确的数据
  • loadMarkers()返回undefined后的Console.log()

1 个答案:

答案 0 :(得分:4)

@ MarcKline的评论是正确的。无论如何,按照我认为你试图通过你的这段代码来实现,你可以将ajax响应中返回的数据分配给范围变量(假设你使用的是$ scope),例如$scope.markerOptions = response 。您可以通过var $scope.markOptions = []将标记声明声明为范围变量(...当然,请相应地将其记录为console.log($scope.markOptions))。另外,定义$scope.loadMarkers = function() {...}并通过$scope.loadMarkers()

调用它

一旦客户端获得其ajax响应,范围就会更新。 希望它能帮助您满足当前的需求,同时更好地理解javasciprt的异步方法,并通过评论向您解释其中的一些原则。