与nodejs集成主链



尝试从骨干模型中获取nodejs响应。

更新
将模型代码更改为以下并获取错误

xmlhttprequest不能加载 http://localhost:3000/getDifficulty。不 请求的"访问控制"标头 资源。因此,不允许访问原点" null"。

var Bitcoin = Backbone.Model.extend({
    url:'http://localhost:3000/getDifficulty'
});
var info = new Bitcoin ();
info.fetch();

节点JS非常简单,可以为URL http://localhost:3000/getDifficulty

工作正常

服务器端节点JS

var http = require('http'),
    express = require('express'),
    bitcoin = require('bitcoin');
var app = express();
var client = new bitcoin.Client({
    host: 'localhost',
    port: 8332,
    user: 'himanshuy',
    pass: 'xxx'
});
app.get('/getDifficulty', function(req, res) {
    client.getInfo(function(err, info) {
        if(err) {
            res.send('Bitcoin error: '+ err);
        } else {
            res.send('Difficulty: ' + info);
        }
    });
});
app.listen(3000);

客户端骨干模型

var Bitcoin = Backbone.Model.extend({
             urlRoot:'http://localhost:3000/getDifficulty' 
});
var info = new Bitcoin();

如果给出这样的模型

,它可以正常工作
var info = new Bitcoin({version:"1.0.0.", balance:"20.03"});

这意味着该模型没有从URL获得结果。
请帮助。

注意:我对骨干和nodejs

都是新手

尝试使用

var Bitcoin = Backbone.Model.extend({
         url:'getDifficulty' 
});
var info = new Bitcoin();
info.fetch();

并查看控制台以查看服务器的响应。从外观上看,以上是不起作用的,因为您没有返回JSON对象res.send('Difficulty: ' + info)。Backbone期望提供JSON数据(并且只有JSON),因此可以将值加载到模型实例中。

如果您要从服务器返回的内容需要在加载到MODEKL之前进行修改,则需要实现parse函数(请参阅http://backbonejs.org/#model-parse):

var Bitcoin = Backbone.Model.extend({
         url:'getDifficulty',
         parse: function(response){
             // the return value should be what needs to loaded into the model
             // for example, if we need to only have the `data`attribute in the model:
             return response.data;
         }
});

如果您遇到了

之类的错误
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'null' is therefore not allowed access.

您可能需要将浏览器配置为禁用CORS或Web安全设置。此镀铬扩展应解决该错误。

在Firefox中,力CORS扩展很有帮助。

使用特定命令行参数启动Chrome也可以防止这些类型的错误,但要付出诸如XSS之类的vuln的损失易于受苦:在目标字段中的Windows上,这起作用 - 以较低的浏览器安全性为好:

"C:Program FilesGoogleChromeApplicationchrome.exe" --disable-web-security

最新更新