尝试使用Backbone的navigation属性。

 this.navigate("week/" + companyName + "/" + employeeNo + "/" + weekEnd, { trigger: true, replace: false });


上面的代码执行一次。

它击中了这个:

routes: {
    "week/:companyName/:employeeNo/:weekEnd": "getWeek"
},


然后此函数被击中两次:

getWeek: function (companyName, employeeNo, weekEnd) {
    console.log('getWeek:', companyName, employeeNo, weekEnd);
 }


在Firefox中记录两次,在IE和Chrome中记录一次。

这是什么问题?我最初甚至没有将触发器设置为true,而Firefox忽略了该设置,但仍然触发了URL。

最佳答案

我最近遇到了类似的问题,Firefox在Backbone.navigate之后进行了两次服务器调用。就我而言,这是因为我们没有编码字符串。您的公司名称是否包含任何应编码的字符?

您可以尝试:

this.navigate("week/" + escape(companyName) + "/" + employeeNo + "/" + weekEnd, { trigger: true, replace: false });

07-24 19:07