尝试从Backbone Model获取Nodejs响应。
更新
将模型代码更改为以下内容并获取错误
XMLHttpRequest无法加载
http://localhost:3000/getDifficulty
。没有 请求中存在“Access-Control-Allow-Origin”标头 资源。因此,不允许原点'null'访问。
var Bitcoin = Backbone.Model.extend({
url:'http://localhost:3000/getDifficulty'
});
var info = new Bitcoin ();
info.fetch();
Node JS非常简单,适用于网址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都是新手
答案 0 :(得分:0)
尝试使用
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;
}
});
答案 1 :(得分:0)
如果您收到
等错误No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'null' is therefore not allowed access.
您可能需要将浏览器配置为禁用CORS或Web安全设置。 This Chrome extension should get around that error.
在Firefox中,Force CORS extension is helpful.
使用某个命令行参数启动Chrome也可以防止这些类型的错误,但代价是像XSS这样的漏洞变得更容易受到影响:在目标字段的Windows上,这样做 - 导致浏览器安全性降低好:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security