Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ember中ajax post请求后的响应_Javascript_Ruby On Rails_Ajax_Facebook_Ember.js - Fatal编程技术网

Javascript ember中ajax post请求后的响应

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", "

我是ember的新手。我设计了一个ember应用程序,并在其中集成了fb登录,必须将facebook accesstoken发送到应用程序后端(post请求)并获取后端(rails)生成的令牌

我的请求回复如下:

{
"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请求。