0

Express.js アプリを使用してバックボーン Node.js を開発しています。サーバーから次のコードのような応答を受信した後、関数をトリガーしようとしています。

mainView.js

...

user: null,

initialize: function () {
     _.bindAll(this, 'registerSuccess', 'loginSuccess');
     this.user = new userModel();
}

registerSuccess: function () {
     this.user.auth({
          success: this.loginSuccess
     });
});

loginSuccess: function () {
    console.log('loginSuccess');
}

userModel.js

  ...  

, auth: function (options) {
     $.ajax({
          url: 'users/auth'
        , type: 'post'
     }, options);
})

app.js

var api = require('./routes/apiController');

app.post('/users/auth', api.userAuth);

apiController.js

exports.userAuth = function (req, res) {

    return res.send( { 
       status: 200
    });

}

私は応答を得ています:

ここに画像の説明を入力

console.log('loginSuccess')ただし、この関数からの文は出力されません。

4

1 に答える 1

1

を呼び出す方法は 2 つあります$.ajax

  1. jQuery.ajax(url, settings)
  2. jQuery.ajax(settings)

最初のケースでは、文字列であるurl 必要settingsがあり、オプションのオブジェクトです。2 番目のケースでsettingsは、これもオプションのオブジェクトです。$.ajax次の 2 つのオブジェクトで呼び出しています。

auth: function (options) {
    $.ajax({
        url: 'users/auth'
      , type: 'post'
    }, options);
}

最初の引数は文字列ではない$.ajaxため、2 番目の呼び出し形式を使用してoptions完全に無視します。_.extendおそらく、引数をマージするために使用したいと思うでしょう:

$.ajax(_({
    url: 'users/auth'
  , type: 'post'
}).extend(options));

または、誤って and を_.defaults上書きするのを避けたい場合:urltype

$.ajax(_({
    url: 'users/auth'
  , type: 'post'
}).defaults(options));

または、2 つしかないので、手動で詰め込むだけです。

options      = _(options).clone(); // Avoid accidentally messing with the argument.
options.url  = 'users/auth';
options.type = 'post';
$.ajax(options);
于 2013-09-09T17:42:13.580 に答える