尝试从骨干模型中获取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