Dom7 - getJson有效,但无法传输数据

时间:2017-01-13 18:41:52

标签: javascript json html-framework-7 dom7

我正在使用Framework7的Urban Dictionary api示例。

这是来自网址的结果JSON(编辑不要问我为什么,但它以'a'开头):

a{
  "bills": [
    {
      "id": 8,
      "name_id": "6",
      "category_id": 4,
      "isPaid": "Yes",
      "value": "190.00",
      "expiry": "2016-12-15 00:00:00",
      "created_at": "2017-01-04 15:44:00",
      "updated_at": "2017-01-04 15:44:00",
      "name": {
        "id": 6,
        "name": "Test1",
        "created_at": "2017-01-04 15:39:45",
        "updated_at": "2017-01-04 15:39:45"
      },
      "category": {
        "id": 4,
        "name": "System",
        "created_at": "2017-01-04 15:37:43",
        "updated_at": "2017-01-04 15:37:43"
      }
    }
  ]
}

这是my-app.js上的一段代码:

function getrandom() {
  // Get JSON Data from UrbanDictionary API 
  $$.getJSON('http://[privateurl]', function (json) {

// Insert rendered template
    $$('#content-wrap').html(compiledTemplate(json));
  });
};

我尝试通过以下方式获得结果:console.log(getrandom());

我得到:Undefined

它没有加载我的列表。

              {{#each list}}
              <li>
                <a href="{{bill_id}}" class="item-link item-content external" target="_blank">
                  <div class="item-inner">
                    <div class="item-title-row">
                      <div class="item-title">"{{bill_id}}"</div>
                      <div class="item-text">by {{value}}</div>
                    </div>
                  </div>
                </a>
              </li>
              {{/each}}

但是,如果我这样做:console.log($$.getJSON('http://hiddenapiurl'));

我的结果很好。

编辑:实际的城市词典api正常工作。但我的出于某种原因并不是这样。

EDIT2

以下是my-app.js的完整代码:

var myApp = new Framework7({});

var $$ = Dom7;

// Select Template
var template = $$('#random-template').html();

// Compile and render
var compiledTemplate = Template7.compile(template);

// Defined as function "getrandom"
function getrandom() {
  $$.getJSON('http://[privateurl]', function (json) {

    // Insert rendered template
    console.log(json);
    $$('#content-wrap').html(compiledTemplate(json));
  });
};


console.log($$.getJSON('http://[privateurl]'));

getrandom();

// Select Pull to refresh content
var ptrContent = $$('.pull-to-refresh-content');

// On refresh
ptrContent.on('refresh', function (e) {
  // Emulate 1s loading
  setTimeout(function () {

    // Execute getrandom to get new Definitions
    getrandom();

    myApp.pullToRefreshDone();
  }, 1000);
});


var mainView = myApp.addView('.view-main', {
  dynamicNavbar: true
});

1 个答案:

答案 0 :(得分:1)

首先,getrandom()函数没有return,这就是console.log(getrandom())Undefined的原因!

其次,您在哪里选择了使用compiledTemplate编译的模板?

例如:

    var searchTemplate = $('#list-template').html();
    var compiledSearchTemplate = Template7.compile(searchTemplate);

    myApp.onPageInit('search', function (page) {
        // Just execute compiled search template with required content:
        var html = compiledSearchTemplate({/*...some data...*/});

        // Do something with html...
    });        

请仔细检查Framework7示例。

编辑2:

为什么在json数组名称为each list时说bills? 尝试使用each billseach this.bills

a困扰着你,因为你的json文件在它的开头有一个a字母!

enter image description here

祝你好运!