无法在EmberJS中的模板中获取外部JSON数据

时间:2016-09-13 19:23:31

标签: javascript json ajax ember.js ember-cli

我已经搜索了这个主题并尝试了多项内容,但到目前为止还无法解决我的问题,因此我创建了一个帐户以便我可以学习:)

我正在学习EmberJS,我无法从EmberJS中的路径获取JSON数据以输出到实际模板。但是,路由中的Javascript警报会显示数据。

我正在调用第三方API,通过http从外部获取域名的WHOIS信息。

示例JSON输出

$ ./script.py 1 PROD  ROLLBACK
psql -h <server_host> -d <db_name> -U <db_user> -p <port> -c "begin; select * from student.students limit 5; ROLLBACK;"

ERROR: bash: psql: command not found

这是我的代码。

{ "status": [ "clientTransferProhibited https:\/\/icann.org\/epp#clientTransferProhibited" ], "updated_date": [ "2012-12-04T00:00:00" ], "contacts": { "admin": null, "tech": null, "registrant": null, "billing": null }, "nameservers": [ "adns1.apple.com", "adns2.apple.com", "nserver.apple.com", "nserver2.apple.com", "nserver3.apple.com", "nserver4.apple.com", "nserver5.apple.com", "nserver6.apple.com" ], "expiration_date": [ "2021-02-20T00:00:00" ], "creation_date": [ "1987-02-19T00:00:00" ], "raw": [ "\n Domain Name: APPLE.COM\n Registrar: CSC CORPORATE DOMAINS, INC.\n Sponsoring Registrar IANA ID: 299\n Whois Server: whois.corporatedomains.com\n Referral URL: http:\/\/www.cscglobal.com\/global\/web\/csc\/digital-brand-services.html\n Name Server: ADNS1.APPLE.COM\n Name Server: ADNS2.APPLE.COM\n Name Server: NSERVER.APPLE.COM\n Name Server: NSERVER2.APPLE.COM\n Name Server: NSERVER3.APPLE.COM\n Name Server: NSERVER4.APPLE.COM\n Name Server: NSERVER5.APPLE.COM\n Name Server: NSERVER6.APPLE.COM\n Status: clientTransferProhibited https:\/\/icann.org\/epp#clientTransferProhibited\n Updated Date: 04-dec-2012\n Creation Date: 19-feb-1987\n Expiration Date: 20-feb-2021" ], "whois_server": [ "whois.corporatedomains.com" ], "registrar": [ "CSC Corporate Domains, INC." ] }

routes/file.js

在我的import Ember from 'ember'; export default Ember.Route.extend({ titleToken: "MyTitle", model() { $.ajax({ type: "GET", url: "https://api.who.pm/apple.com", dataType: "json", success: function(jsonData) { alert(JSON.stringify(jsonData)); return jsonData; }, error: function(request, status, error) { console.log("Error! " + request.responseText); } }); } }); 我尝试了各种各样的事情来获得templates/file.hbs输出,但是没有成功。我尝试过jsonData{{model}}和其他一些事情。目前我只是想在模板中获取数据输出。

页面运行时警报会成功启动。

非常感谢任何帮助。 谢谢

1 个答案:

答案 0 :(得分:1)

模型钩子应该返回一个promise或实际数据,你什么也不返回。

return jsonData返回成功函数,而不是模型钩子。在调用success钩子时,模型钩子已经返回。

我强烈建议您告诉自己有关javascript函数,回调和闭包的信息。另外,请确保您了解this和Promises。

对于jQuery的使用,你需要知道jQuery 2.x .ajax()将返回一个thenable,但这不是一个promise。这在jQuery 3.x中得到修复。所以现在使用RSVP.resolve

model() {
  return Ember.RSVP.resolve($.ajax({
    type: "GET",
    url: "https://api.who.pm/apple.com",
    dataType: "json",
  }));
}
相关问题