我已经搜索了这个主题并尝试了多项内容,但到目前为止还无法解决我的问题,因此我创建了一个帐户以便我可以学习:)
我正在学习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}}
和其他一些事情。目前我只是想在模板中获取数据输出。
页面运行时警报会成功启动。
非常感谢任何帮助。 谢谢
答案 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",
}));
}