在调用google api thru emberjs时响应未定义

时间:2017-12-14 05:21:05

标签: javascript ajax google-maps-api-3 ember.js autocomplete

我正在尝试使用google api从ember js获取地点建议。如下所示:这是服务模块

fetch(){
let url=`https://maps.googleapis.com/maps/api/place/autocomplete/json?input=IL&types=geocode&key=API_KEY`
return Ember.RSVP.resolve(Ember.$.ajax(url,{
method: 'GET'
}))
.then(
(response)=>{
console.log("google suggested places:",response);
return response;
})

*上述网址与API_KEY一起提供并粘贴在浏览器中时,会返回带有建议位置的JSON响应。

另外,我在开发人员工具的newtwork选项卡中看到JSON响应,但是.then无法捕获这种共鸣,并在控制台中打印作为响应未定义。

参考:https://developers.google.com/places/web-service/autocomplete#place_autocomplete_results

在控制台中我看到"无法加载https://maps.googleapis.com/maps/api/place/autocomplete/json?input=IL&types=geocode&key=API_KEY:请求的资源上没有“访问控制 - 允许_原始”标头。起源' http://localhost:4200'因此不允许访问。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您使用的是Ember.RSVP.resolve错误。它返回一个Promise,它会立即解析,并将值作为第一个参数传递。因此,在您的情况下,它会以Ember.$ajax()的返回值结算。我不太确定这个功能是否存在。我想你的意思是Ember.$.ajax(),它只是jQuery.ajax()的别名。但是这个应该返回jqXHR object。所以我不知道为什么你的代码不是因为Ember.$ajax()不是函数,或者responseundefined而不是jqXHR对象。

但是你在承诺中包装ajax调用的方法是错误的。另外我会说使用jQuery.ajax不是最佳实践。有一些工作正在使ember.js中的jQuery可选,你不想将你的应用程序与它结合。

我建议使用ember-fetchember-ajax

答案 1 :(得分:0)

上述方法不起作用,因此对于任何想要有关于ember应用程序的地图建议的人,请遵循此 https://www.npmjs.com/package/ember-cli-g-maps

完美的工作。