AngularJS $ http不发送GET请求

时间:2013-08-08 14:08:41

标签: angularjs

在我正在开发的Angular JS应用程序中,我正在定期(在$timeout中)使用服务向我的API中的URL发出GET请求(Angular应用程序和API都在从localhost上的端口5000提供服务。)

出于某种原因,似乎$ http实际上并没有发送GET。对于每个$http.get(),使用空数据调用.error(),状态为0.当我签入我的服务器日志时(我正在为我的服务器运行带有Unicorn gem的Ruby on Rails后端) ,似乎服务器从未收到Angular的请求。

这是我服务中的功能:

updateUserStatus = () ->
    $http.get('/api/v1/status').success (statusData) ->
        # update the variable and notify the observers
        this.userStatus = statusData
        notifyObservers()
        startStatusTimeout()
    .error (error, status) ->
        # if there's an error, log it
        console.log 'error:'
        console.log error
        console.log status
        startStatusTimeout()

奇怪的是它只发生有时。当它停止工作时,我可以将$http.get()中的网址更改为'/api/v1/status.json',然后就可以了。一阵子。然后我将其切换回来并再次运作一段时间......显然在游戏中有一些更大的问题。

我现在已经绞尽脑汁了几天,我在SO上看到了一堆类似的问题,但是它们似乎都是通过在Angular中实现CORS来解决的,我认为这不适用我的情况,因为它全部来自localhost:5000。我错了吗?发生了什么事?

作为参考,我使用的是Angular版本1.0.7。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 检查您的代码,看看是否在从DOM触发并且Angular不知道的事件之后发生这种情况。 如果是这样,您需要在获取请求之后添加$scope.$apply();以使其成为现实。

我对Angular很新,所以我不确定这是使用Angular的最佳做法,但它确实适用于我的情况。

请参阅此similar问题以获得更好的解释。