NodeJS使用express返回JSONP NOT

时间:2013-11-03 13:59:42

标签: javascript json node.js angularjs

我试图调用我的nodejs服务器并显示angularjs应用程序的结果。我一直在关注一个例子,但是当我更改代码的示例代码时,它总是调用错误回调。我觉得我的服务器有问题,但是我无法使它工作,它的nodejs没有express或其他库,所有其他答案都涉及使用express。如何在不使用快递的情况下使其工作?

angularjs中的代码,我调用服务器:

app.controller('Main', function ($scope, $http) {
    $scope.init = function() {        
        //var api = 'http://api.trakt.tv/calendar/premieres.json/7c989229f2fa626832e7576eb59820e9/20131103/30/?callback=JSON_CALLBACK';        
        $http.jsonp('http://localhost:8888/selectAllLocations?callback=JSON_CALLBACK').success(function(data) {
            console.log(data);
        }).error(function(error) {
            console.log('My error: ' + error);
        });
    };

});

如果我使用var api中的值,结果就可以了,调用成功,而不是我的。

这是我的nodejs服务器中的代码。

var result = sequelize.query(query, null, options, parameters)
.success(function (rows) {        
    if (type == 'select') {
        response.writeHead(200, { "Content-Type": "application/json" });
        response.write(JSON.stringify(rows));
        response.end();
    } else if (type == 'modify') {
        response.writeHead(200, { "Content-Type": "text/html" });
        response.write("Query was successful");
        response.end();
    }
}
).error(function (e) {
    console.log("An error occured: ", e);
    response.writeHead(404, { "Content-Type": "text/html" });
    response.write("There was an error man, shits on fire yo ---> " + e);
    response.end();
}
);

我很确定我必须将json结果包装在一个函数中,但我不知道如何,我甚至不知道函数名称,因为这是我在服务器中得到的所有内容:

路径:/ selectAllLocations params:{“callback”:“angular.callbacks._0”}

我理解我返回纯粹的json,我可以在我的回复中看到它在chrome中,所以,有一些东西阻止它调用成功函数。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

函数名称指定为callback参数。

 response.write(params.callback + '(' + JSON.stringify(rows) + ')');