NodeJs表示将json数据发送到骨干网

时间:2014-02-11 09:46:05

标签: json node.js backbone.js express

嗨,我没理解为什么这不起作用。 我正在尝试向我的客户端发送一个简单的json对象,它通过骨干提取接收数据。 它适用于json测试链接,但不知道如何不与本地nodeJs服务器

Server.js

var express = require('express'),
    app = express();

app.engine('html', require('ejs').renderFile);
app.set('/js', express.static(__dirname + "/js"));

app.get('/', function(req, res) {
    var obj = { "foo" : "bar" };
    res.json(obj)
});

app.listen(8888);

客户端:

define('APP',
    ["jquery", 
    "underscore", 
    "backbone"], 

    function() {
    var APP = {
        init: function(){
            getModel();
        }
    }

    function getModel(){

        var Collection = Backbone.Collection.extend({
            // http://localhost:8888
            //http://echo.jsontest.com/key/value/one/two <-- works
            url: 'http://localhost:8888',
        });

        myCollection = new Collection();
        myCollection.fetch({
                error: function (collection, response) {
                    console.log('error', response);
                },
                success: function (collection, response) {
                    console.log('success', response);
                }
            });

    }

    APP.init();
    return APP;

});

我没有得到客户方面的回复。

感谢您帮助我

* 编辑:我浏览了类似的问题,但没有人以某种方式工作*

1 个答案:

答案 0 :(得分:2)

我发现在这种情况下会出现什么问题,我会回答我自己的问题,因为其他人可能会遇到同样的问题。

问题是,标头未设置为Access-Control-Allow-Origin。 由于我只使用firefox,我没有看到这个错误,但是chrome给我看了。

这是server.js的工作代码

var express = require('express'),
    app = express();

app.engine('html', require('ejs').renderFile);
app.set('/js', express.static(__dirname + "/js"));

var obj = { "foo" : "bar" };
app.get('/', function(req, res) {

    res.contentType('application/json');
    res.setHeader("Access-Control-Allow-Origin", "*");
    res.json(obj)
}); 

app.listen(8888);