从Angular调用节点

时间:2015-09-03 14:32:11

标签: javascript angularjs

我猜这是一个全新的Angular问题,但我认为这比看起来容易。

我有一个简单的html表单:

<div>
    <form ng-submit="processUrls()">
        <label>Urls to Process</label>
        <button class="btn" style="margin-left:15em;">Process</button>
        <br />
        <textarea rows="10" cols="50" wrap="soft" ng-model="process.urls">
</textarea>
        <label>Output:</label>
        <input style="width:25em;" ng-model="output.outputText" />
    </form>
</div>

和一个简单的功能:

$scope.processUrls = function() {
            $http.get("http://localhost:4355/test1").then(function(response){
                $scope.output.outputText = response.data;
            },function(response){
                alert("data = " + response.data + "\r\nstatus = " + response.status + "\r\nstatusText = " + response.statusText);
                $scope.output.outputText = "Error: " + response.data;
            });
        };

它正在调用一个节点服务,它正在为每个调用运行并写入控制台,因此我确信它正在工作并被调用。这是:

// temp route for testing of Angular
server.route({
    method: "GET",
    path: "/test1",
    handler: function(request, reply) {
        return reply("Hello World").code(200);
    }
});

但是,这似乎不起作用。我得到的全部是“错误:空”,我的警报几乎没有告诉我。所以,我想知道这是否与跨域某事有关,或者我是否只是缺少一些基本的东西。任何想法都将不胜感激。

V

1 个答案:

答案 0 :(得分:0)

好的,所以只是在这里提供一个答案:这是一个CORS问题而且它是因为我只是将我的角度html文件加载到我的浏览器中而创建的。通过在我的节点服务中创建一个新的服务器路由和一个包含我所有Web文件的“静态”目录,这个问题就消失了。

我正在使用hapijs;静态路由如下所示:

server.route({
    method: "GET",
    path: "/web/{param*}",
    handler: {
        directory: {
            path: "static"
        }
    }
});