0

私はおそらくこれに間違った方法で取り組んでいますが、我慢してください:

私のserver.jsでこれを手に入れました

tweetThisThing = require('./lib/kustomtwitter'),

app.get('/tweet/:msg', function(req, res){
var tweet = req.params.msg;
tweetThisThing(tweet); // le magic
    res.redirect('/cars');
});

ブラウザーを http://localhost:3000/tweet/This will be tweetedツイートに誘導すると、正常に送信されます。

バックボーンを介して同じ高速エンドポイントを呼び出そうとすると、次のようになります。

バックボーンスクリプトでこれを取得しました

app.navigate('tweet/' + theMessageThatWillBeTweeted,  {trigger:true, replace: true});

、バックボーンは常にルートでハッシュを強制し、ツイートの送信に失敗しますhttp://localhost:3000/#tweet/This will not be tweeted

これは予想される動作であり、いくつかの「回避策」には、バックボーン スクリプトにpushState:trueを追加することが含まれますが、機能させることができないようです。

必要な動作を取得する簡単な方法はありますか、またはこの特定のユースケース用にバックボーン ルートを設定する必要がありますか?

4

1 に答える 1

1

でpushStateをオンにする場合

Backbone.history.start({pushState: true});

別の方法としては、バックボーンをすべてバイパスしてjQuery.getを使用するだけです。例えば:

$.get('tweet/' + theMessageThatWillBeTweeted, function(result) {
   // Also instead of redirecting you could output the twitter response code
   // and verify the request was a success here
   console.log(result);
});

ところで、これGETを行うにはおそらく を使用するのが最善の方法ではありません。おそらく、POSTはるかに柔軟性とクリーンな URL を提供するものを使用したほうがよいでしょう。

于 2013-07-09T02:57:50.023 に答える