【问题标题】:Read JSON file from ionic promise从 ionic promise 中读取 JSON 文件
【发布时间】:2016-02-11 12:54:41
【问题描述】:

我正在开发一个离子项目,并尝试通过从服务发送的承诺从本地读取 JSON 文件,最后注入控制器。但是,我收到错误 SyntaxError: Unexpected token J,其中 J 始终是我的 JSON 文件中的第一个字符。

有人有想法吗??非常感谢!!!

我在 app.js

中有一条路线
.config(function($stateProvider, $urlRouterProvider) {

  $stateProvider
  .state('home', {
     url: '/',
     templateUrl: 'templates/home.html',
     controller: 'MainCtrl as vm',
     resolve: {
        weather: function(MyService) {
           return MyService.getData();
     }
  });

  $urlRouterProvider.otherwise('/');
});

我的services.js在这里

.factory('MyService', function($http) {

   var base_url = "http://localhost:8100/";

   function getData() {
       return $http.get(base_url+'data/pt_br/mydata.json?callback=JSON_CALLBACK')
          .then(
             function(res) {
                return res;
             },
             function(err) {
                return err;
             }
          )
   }

   return { getData: getData() }
});

这是我的控制器

.controller('MainCtrl', function(weather) {

   var vm = this;
   vm.weather = weather;
});

最后,我的 json 文件:

JSON_CALLBACK ({
    'Introduction': 'Welcome to my site!',
    'texts' : [
        'text1': 'hello',
        'text2': 'world'
    ]
});

【问题讨论】:

  • 我猜 JSON 需要双引号而不是单引号。另外SyntaxError: Unexpected token J 表示字符串以J 开头
  • 我已经尝试过使用双引号,Rajesh,但不起作用。谢谢。

标签: javascript angularjs json rest ionic-framework


【解决方案1】:

我认为您需要使用JSONP,因为当它返回时,它实际上将函数名称作为响应的第一部分。

您需要对代码进行的更改是:

 return $http.jsonp(base_url+'data/pt_br/mydata.json?callback=JSON_CALLBACK')

阅读有关 jsonp 的信息,以便了解 JSONP 发生了什么。这是一个fiddle,告诉你如何使用jsonp。

如果您检查网络调用,您会看到 Angular 将 JSON_CALLBACK 替换为它设置的内容,因此您可能无法尝试模拟它。

angular.callbacks._1({"data": "{\"foo\":\"bar\"}"});

【讨论】:

  • 谢谢 Nix,但我会用更自然的方式解决这个问题。我正在使用 CORS 浏览器扩展来避免跨域警察问题。我真的觉得我已经接近解决方案了,你能知道用 $http get 解决这个问题的任何方法吗?还是 $resource?
【解决方案2】:

我解决了这个问题。我发现我的 json 文件是像纯文本一样发送的。我在 json 验证器 https://jsonformatter.curiousconcept.com/ 中传递了我的 json 文件,然后,我意识到 ALL STRINGS 应该用双引号括起来,而不仅仅是值。感谢@Rajesh 提供线索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2021-12-16
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多