无法在 EmberJS 的模板中获取外部 JSON 数据
Unable to Get External JSON data in template in EmberJS
我已经搜索过这个主题并尝试了多种方法,但到目前为止都无法解决我的问题,所以我创建了一个帐户以便学习:)
我正在学习 EmberJS,但我无法从 EmberJS 中的路由获取 JSON 数据以输出到实际模板。但是,路线中的 Javascript 警报会显示数据。
我正在呼叫第三方 API,后者通过 http 从外部获取域的 WHOIS 信息。
示例JSON输出
{
"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}}
、{{model.data}}
和其他一些方法。现在我只是想在模板中获取数据输出。
页面为 运行 时警报成功启动。
如有任何帮助,我们将不胜感激。
谢谢
模型挂钩应该return一个承诺或实际数据,你return什么都没有。
return jsonData
return 是成功函数,不是模型挂钩。在调用成功挂钩时,模型挂钩已经 returned.
我强烈建议您自行了解 javascript 函数、回调和闭包。还要确保您了解 this
和 Promises.
要与 jQuery 一起使用,您需要知道 jQuery 2.x .ajax()
将 return 成为 thenable,但这不是承诺。这已在 jQuery 3.x 中修复。所以现在请使用 RSVP.resolve
:
model() {
return Ember.RSVP.resolve($.ajax({
type: "GET",
url: "https://api.who.pm/apple.com",
dataType: "json",
}));
}
我已经搜索过这个主题并尝试了多种方法,但到目前为止都无法解决我的问题,所以我创建了一个帐户以便学习:)
我正在学习 EmberJS,但我无法从 EmberJS 中的路由获取 JSON 数据以输出到实际模板。但是,路线中的 Javascript 警报会显示数据。
我正在呼叫第三方 API,后者通过 http 从外部获取域的 WHOIS 信息。
示例JSON输出
{
"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}}
、{{model.data}}
和其他一些方法。现在我只是想在模板中获取数据输出。
页面为 运行 时警报成功启动。
如有任何帮助,我们将不胜感激。 谢谢
模型挂钩应该return一个承诺或实际数据,你return什么都没有。
return jsonData
return 是成功函数,不是模型挂钩。在调用成功挂钩时,模型挂钩已经 returned.
我强烈建议您自行了解 javascript 函数、回调和闭包。还要确保您了解 this
和 Promises.
要与 jQuery 一起使用,您需要知道 jQuery 2.x .ajax()
将 return 成为 thenable,但这不是承诺。这已在 jQuery 3.x 中修复。所以现在请使用 RSVP.resolve
:
model() {
return Ember.RSVP.resolve($.ajax({
type: "GET",
url: "https://api.who.pm/apple.com",
dataType: "json",
}));
}