我正在创建一个使用MONGOHQ
来存储数据的Web应用,并使用Sinatra来运行应用。如果我转到:localhost:4578/names.json
,我会得到我用于数据的所有名称的名称。但是,我使用getJSON
jquery
方法访问此数据时遇到问题。
文件/names.json
如下所示:
["Yasiel Puig","Nick Franklin","Mike Zunino","Jurickson Profar","Manny Machado"]
我尝试过这样的事情:
var series = []
$.get('names.json', function(n) {
n.forEach(function(s) {
series.push({
name: s
})
})
}, 'json')
但这并没有真正起作用。您对我应该如何访问json数据有任何其他想法吗?我能把它保存到var吗?我很确定json
数据不是JSONP
格式,所以我应该将其视为AJAX
?
答案 0 :(得分:0)
您的代码似乎有效,我在this小提琴中尝试过。因此问题可能在服务器端。
var data = ["Yasiel Puig", "Nick Franklin", "Mike Zunino",
"Jurickson Profar", "Manny Machado"];
var series = [];
data.forEach( function( e ) {
series.push( {
name: e
});
}
);
series.forEach( function( e ) {
console.log( e.name );
});
答案 1 :(得分:0)
我可以将它保存到var吗?
可能。但是,这取决于你需要它的变量和地点/时间。
$.get()
是异步的。它只启动请求,将回调设置为侦听器,然后退出。
var series = [];
$.get('names.json', function (n) {
n.forEach(function(s) {
series.push({
name: s
});
});
// inside the callback...
console.log(series); // filled: [ { name: "Yasiel Puig" }, ... ]
});
// after the request...
console.log(series); // still empty: []
因此,您可以在回调中使用series
,或者更重要的是n
。外面,它还没有。
答案 2 :(得分:0)
调用$.get('names.json')
和$.get('/names.json')
之间存在差异我认为您没有将起始slash(/)
添加到网址
当您致电$.get('names.json')
时,会拨打complete_current_url + '/names.json'
例如。如果您在/home
页面上,那么将调用的网址为/home/names.json
和$.get('/names.json')
将致电current_domain + '/names.json'
从任何页面始终会调用'/names.json'