我正在尝试使用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'因此不允许访问。
我做错了什么?
答案 0 :(得分:0)
您使用的是Ember.RSVP.resolve
错误。它返回一个Promise
,它会立即解析,并将值作为第一个参数传递。因此,在您的情况下,它会以Ember.$ajax()
的返回值结算。我不太确定这个功能是否存在。我想你的意思是Ember.$.ajax()
,它只是jQuery.ajax()
的别名。但是这个应该返回jqXHR
object。所以我不知道为什么你的代码不是因为Ember.$ajax()
不是函数,或者response
是undefined
而不是jqXHR
对象。
但是你在承诺中包装ajax调用的方法是错误的。另外我会说使用jQuery.ajax不是最佳实践。有一些工作正在使ember.js中的jQuery可选,你不想将你的应用程序与它结合。
我建议使用ember-fetch或ember-ajax。
答案 1 :(得分:0)
上述方法不起作用,因此对于任何想要有关于ember应用程序的地图建议的人,请遵循此 https://www.npmjs.com/package/ember-cli-g-maps
完美的工作。