javascript - Ember.RSVP.Promise 与 AJAX 调用

标签 javascript ajax ember.js

嗨,我正在尝试了解 Promise 与 Ajax 调用一起工作的方式。 我想向某个端点发送一个简单的 Ajax 调用,但我真的对代码语法感到困惑。这是我的代码:

该代码的目的是使用户的 session 无效。首先,客户端应向注销端点发送 ajax 调用,提供用户的 token ,然后如果服务器响应成功,我们调用 invalidate() 方法从客户端清除用户数据。

import Ember from 'ember';

export default Ember.Controller.extend({
    session: Ember.inject.service('session'),

    actions: { 
       invalidateSession() {
        const url = "http://namespace/logout/";
        let logoutRequest = new Ember.RSVP.Promise(function(r,e){
            r(this.ajax(url, "PUT", {auth_token});)
        },
        if (logoutRequest) {
            this.get('session').invalidate();
        }
      }
    }
});

我知道我的代码不起作用,但我无法将它们组合在一起......

最佳答案

使用ember-ajax这应该有效:

ajax: Ember.inject.service(),
....
actions: {
 invalidateSession(){
   return this.get('ajax').request('url_goes_here', {
      method: 'PUT',
      data: {
        some: "additional data"
       },
     }).then(function(success) {
        // inform about successful logout, redirect...
     }).catch(function(error) {
        // handle or throw error 
     });
    }
}

更新: 如果你想将其包裹在 Promise 中,请尝试以下操作: ...

正如@locks提到的,建议使用ember-ajax库而不是使用原始的Ember.$.ajax()。由于 this.get('ajax').request() 返回一个 Promise,因此不再需要将其包裹在 Promise 中。

但是,如果您只想注销,我建议您查看 ember-simple-auth库(插件)已经解决了您将来可能需要的许多功能(登录、注销、失效、重定向到登录路径...)。

关于javascript - Ember.RSVP.Promise 与 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36617877/

相关文章:

javascript - 绘制并显示笑脸(未显示)

javascript - 如果 Sequelize 中不存在嵌套记录,如何获取所有记录

java - Spring 3 AJAX POST 请求与@RequestBody 和@ModelAttribute 以及@SessionAttribute 一起使用?

javascript - Ajax 代码在 html 中不起作用

javascript - Ember.js - 我希望在转换到新路线时触发一个 Action 事件(在 =""上)

javascript - 从长字符串生成短哈希

javascript - 通过下拉选择更改div中特定图像的图像源

javascript - 如何使用 jQuery .live() 和 ajax

javascript - 过滤器的 Ember.js 路由问题

javascript - EmberJS - 如何从子 Controller 内访问父 Controller ?