如何将json数据从单独的js文件获取到主js文件

时间:2012-11-28 10:09:40

标签: json requirejs

在我的项目中,我希望将数据与templates和main.js文件分开。例如,

在我的data.js中:

define({
    heading: "Some Heading",
    subHeading : "Subheading is cool"
});

在我的main.js中,

require(['jquery', 'data'], function($, data){
       console.log("data object is :" + data);
);

这有效,我在控制台上得到了预期的结果。同样地,我想做一个api调用并获取json数据,所以我更新了我的data.js,如下所示,

define(function(){
    require(["http://some api url.com?apikey=apikey&callback=define"],
        function (someData) {
           return someData;     
        }
     );
});

但是,我没有从API调用中获取main.js上的json数据,我得到“数据对象是:未定义”。

我不知道如何在main.js文件中获得“someData”。

非常感谢任何指向可能的解决方案的帮助。感谢。

3 个答案:

答案 0 :(得分:2)

您无法通过requireJS进行服务器调用和加载文件。您应该使用ajax调用来执行此操作。您可以使用jQuery的getJSON方法。 E.g。

$.getJSON("http://some api url.com?apikey=apikey",function (someData) {
       //perform the calculations needed with someData here
       console.log(someData);     
});

答案 1 :(得分:1)

感谢所有人对我的问题进行了抨击!我已经能够使用插件'async'来实现这一点。基本上,我也将我的问题发布在Google Group上,我收到了回复,这里有更多信息的网址, https://groups.google.com/forum/?fromgroups=#!topic/requirejs/39rieY2ZovE

希望这对所有人都有帮助。

感谢。 容光焕发

答案 2 :(得分:0)

查看RequireJS plugins

对于JSON数据,您将需要更改为

require([`json!http://some api url.com?apikey=apikey&callback=define`], 
        function(someData){
          // do something
        });