Javascript ember中ajax post请求后的响应
我是ember的新手。我设计了一个ember应用程序,并在其中集成了fb登录,必须将facebook accesstoken发送到应用程序后端(post请求)并获取后端(rails)生成的令牌 我的请求回复如下:Javascript ember中ajax post请求后的响应,javascript,ruby-on-rails,ajax,facebook,ember.js,Javascript,Ruby On Rails,Ajax,Facebook,Ember.js,我是ember的新手。我设计了一个ember应用程序,并在其中集成了fb登录,必须将facebook accesstoken发送到应用程序后端(post请求)并获取后端(rails)生成的令牌 我的请求回复如下: { "token":"71fcb8c39dc6449e2ac8e88d21e4d008cf746e16a774aa8755f6be0dbc43849265f9010111986a912fde60de4f76eb5a600ec286b26ea0a865cc7f5cab49330a", "
{
"token":"71fcb8c39dc6449e2ac8e88d21e4d008cf746e16a774aa8755f6be0dbc43849265f9010111986a912fde60de4f76eb5a600ec286b26ea0a865cc7f5cab49330a",
"user":{"role":"unverified"}
}
组件是
import Ember from 'ember';
export default Ember.Component.extend({
fb: Ember.inject.service(),
session: Ember.inject.service(),
authenticate: function(accessToken) {
console.log("accesstoken: "+accessToken);
Ember.$.ajax({
url: "http://localhost:3000/v1/sessions/fb_login",
accepts: 'application/json',
data: { token: accessToken},
crossDomain: true,
headers: {
'Client-Key': '403cb982d0c48473bee32b41b6765e15a26c595c689c620cece5fc15370c33c9c9f6d071f84bf6b88baf466f653f44b4524634bde6fbe68f065f06268f7ed7e2',
},
type: 'post',
success:function(data){
console.log('data is '+data);
}
});
},
actions: {
fb_login() {
this.get('fb').login().then((response) => {
if (response.status === 'connected') {
let fbToken = response.authResponse.accessToken;
this.authenticate(fbToken);
} else if( response.status === 'not_authorized') {
// code for not authrized
// this.transitionTo('/');
} else {
// code for facebook login
// this.transitionTo('/');
}
}).catch(() => {
// this.sendAction('check','/');
});
},
}
});
但在ajax调用成功后,我无法获得响应,浏览器始终以以下方式响应:
pretender.js:132 XHR finished loading: POST "http://localhost:3000/v1/sessions/fb_login".
有人请向我解释一下ajax在ember中如何用于api调用。“但是在ajax调用成功后,永远不会被调用”-也许调用没有成功…还可以添加一个错误处理程序,然后看看你得到了什么。我检查了错误,但也没有被调用,当我通过网络选项卡中chrome的inspect元素检查时,我可以看到其中的响应,这很好。但还是不行也许是CORS的问题?我建议使用承诺来处理ajax调用,而不是使用成功/错误处理程序。在jQueryAjax对象上使用Ember.RSVP.Resolve.Catch不会触发,除非您返回承诺。返回这个.get('fb').login().then().catch(()=>现在应该触发)如果上面的代码是你的fb登录,它也应该返回ajax请求。