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一条推文已成功发送。

当我尝试通过 Backbone 调用相同的快速端点时,如下所示:

在我的主干脚本中,我得到了这个

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

, Backbone 总是在路由中强制一个哈希,然后发送推文失败http://localhost:3000/#tweet/This will not be tweeted

我知道这是预期的行为,一些“解决方法”涉及将pushState:true添加到我的 Backbone 脚本中,但我似乎无法让它工作。

有没有一种简单的方法来获得我想要的行为,或者我是否需要为这个特定的用例设置主干路由?

4

1 回答 1

1

如果打开pushState

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

行不通的替代方法是一起绕过 Backbone,只使用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它会给你更多的灵活性和更清晰的网址。

于 2013-07-09T02:57:50.023 回答