0

我有以下应用程序:

var MyApp = Ember.Application.createWithMixins({
    LOG_TRANSITIONS: true,
    VERSION: window.APPVERSION ? window.APPVERSION : '',
    /**
      Specifies what HTML element inside index.html Ember
      should manage for you.
    **/
    rootElement: window.TESTING ? '#qunit-fixture' : '#myapp',
    /**
      Hook, is invoked from the framework as soon the app becomes ready to use.

      @method ready
    **/
    ready: function () {
        Ember.Logger.debug('DEBUG: MyApp.VERSION : ' + MyApp.VERSION);
        Ember.Logger.debug('DEBUG: -------------------------------');
    },
    /**
      Our own $.ajax method around jQuery's. Makes sure the .then method
      executes in an Ember runloop for performance reasons.

      @method ajax
    **/
    ajax: function() {
        var reply = $.ajax.apply(this, arguments);
        Ember.Logger.debug('ajax reply : ' + reply);
        return reply
    },

    ...
});

如您所见,我试图在控制台上查看 ajax 回复的内容。但我无法看到这一点。如何在 javascript 控制台中显示服务器返回的数据?我已经能够通过检查网络通信(例如在 chrome 开发人员工具中)看到这一点,但我希望也能够在控制台中显示它(原因是,虽然返回的数据很好,但 ember没有渲染任何东西,所以我需要调查哪里出了问题,我想从可视化 ember 得到的回复开始)

ajax方法根本没有调用吗?那为什么会在那里?

4

2 回答 2

1

由于您的ajax方法位于您的MyApp命名空间下,因此您必须调用它MyApp.ajax(...)才能真正调用它。您也可以删除额外的ajax并直接使用 ember 的 ajax 方法(这只是 jQuery 的包装器),尝试做$.ajax(...),这应该可以。

但是如果你想使用你自己的ajax包装器,你应该这样调用它:

MyApp.ajax(url, {
  data: {
    ...
  },
  type: 'POST' /* can be GET, PUT, POST etc... */
});

希望能帮助到你

于 2013-06-14T11:35:59.450 回答
0

我错了MyApp.Application.ajax。这不是标准的 ember 方法,因此未使用。正如intuitivepixel所建议的那样,正确的方法是重载该RESTAdapter.ajax方法:

MyApp.Adapter = DS.RESTAdapter.extend({
    ajax: function(url, type, hash) {
        var ajax_reply = this._super(url, type, hash);
        console.log('ajax_reply (promise) -> '); console.log(ajax_reply);
        return ajax_reply;
    }
});

MyApp.Store = DS.Store.extend({
    revision: 12,
    adapter:  MyApp.Adapter.create()
});

这仍然不允许我看到json回复(我只能看到承诺,请参阅此处进行进一步讨论),但这是朝着正确方向迈出的一步。

于 2013-06-14T14:20:49.977 回答