使用ruby在js文件中使用localhost的json数据

时间:2013-08-01 07:10:41

标签: javascript ruby sinatra localhost rickshaw

我正在创建一个使用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

3 个答案:

答案 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'