【问题标题】:using json data from localhost in js file using ruby使用 ruby​​ 在 js 文件中使用来自 localhost 的 json 数据
【发布时间】:2013-08-01 23:34:26
【问题描述】:

我正在创建一个使用 MONGOHQ 存储数据并使用 Sinatra 运行该应用程序的 Web 应用程序。如果我转到:localhost:4578/names.json,我会得到我用于数据的所有名称的名称。但是,我无法使用jquerygetJSON 方法访问这些数据。

文件/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

【问题讨论】:

  • 你怎么知道“真的不行?” 有没有出现错误? series 的问题似乎仍然是空的?
  • 一个常见的初学者写入网络服务问题是您可能正在从文件系统加载 html/javascript,然后浏览器将阻止对网络服务的访问。您是否已安排 Web 服务也为您的 html 和 javascript 提供服务?

标签: javascript ruby sinatra localhost rickshaw


【解决方案1】:

您的代码似乎有效,我在this Fiddle 中尝试过。因此问题可能出在服务器端。

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 );   
});

【讨论】:

    【解决方案2】:

    我可以将它保存到 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。在外面,它还不可用。

    【讨论】:

    • 感谢乔纳森。如果我要将它保存为 var,我会怎么做?
    • @TimKaye 你已经是 -- series。但是,您使用该变量的 wherewhen 是重要的部分。如需详细说明,请查看stackoverflow.com/q/14220321
    【解决方案3】:

    调用$.get('names.json')$.get('/names.json') 之间存在区别,我认为您没有将起始slash(/) 添加到url

    当您调用 $.get('names.json') 时,它会调用 complete_current_url + '/names.json'

    例如。如果您在/home 页面上,那么将调用的网址是/home/names.json

    $.get('/names.json') 将调用current_domain + '/names.json'

    从任何页面它总是会调用'/names.json'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多