Javascript 主干添加?发生错误时在页面url之后
我在运行代码时遇到了一个奇怪的错误。我正在使用一个带有Backbone.js和RequireJS的应用程序。当代码(any)中出现错误时会出现问题,主干或jquery是否会重定向到现有url并添加问号?在页面名称的末尾:Javascript 主干添加?发生错误时在页面url之后,javascript,jquery,url,backbone.js,requirejs,Javascript,Jquery,Url,Backbone.js,Requirejs,我在运行代码时遇到了一个奇怪的错误。我正在使用一个带有Backbone.js和RequireJS的应用程序。当代码(any)中出现错误时会出现问题,主干或jquery是否会重定向到现有url并添加问号?在页面名称的末尾: URL before the error: http://localhost/home#users URL after the error : http://localhost/home?#users 这会导致页面刷新。有人知道为什么会这样吗 这是我的代码: var my
URL before the error: http://localhost/home#users
URL after the error : http://localhost/home?#users
这会导致页面刷新。有人知道为什么会这样吗
这是我的代码:
var myView = Backbone.View.extend({
events: {
'click button#lookUp':'lookUp'
},
lookUp: function(){
//Force error to show the error calling a function does not exist
this.triggerSomeError();
}
});
路由器:
var navigate = function(url) {
appRouter.navigate(url, {
trigger: true
});
}
var initialize = function(){
appRouter = new AppRouter;
Backbone.history.start();
}
Html:
<button class="alinear-btn btn btn-primary" id="lookUp">Imprimir</button>
Imprimir
Chrome开发者控制台:
这是我们遇到的一个非常常见的错误。您需要将代码更改为以下内容:
var myView = Backbone.View.extend({
events: {
'click button#lookUp':'lookUp'
},
lookUp: function(event) {
event.preventDefault();
//Force error to show the error calling a function does not exist
this.triggerSomeError();
}
});
默认情况下,事件对象被传递给从events集合调用的函数,您需要使用它来防止默认行为。您可以将参数命名为任何名称。我通常称之为事件是为了明确
实际上,您在这里抑制的是浏览器中的按钮的默认行为,即执行表单提交。当您在浏览器中执行表单提交时,它会尝试获取表单中的所有内容,并将其作为查询参数附加到url中。在本例中,按钮不是任何形式的,因此它基本上不添加任何内容,只为查询参数打上问号
您获得否决票和出错的原因是因为您没有在视图中创建名为
triggerSomeError()
的方法,所以您当然会在这方面出错。但是,这是完全独立的,与url路径无关。主干网或Requirejs中没有默认情况下应该这样做的内容;你能分享更多你的代码并给出更多关于这个错误的细节吗?@NickTomlin当我点击一个按钮并且它调用的函数内部发生错误时,就会发生这种情况,如果我添加一个preventDefault(),重定向不会触发。我将编辑我的问题。我将分享somo代码。谢谢你的回答。就像你说的,我几天前已经解决了。尽管如此,我还是不明白为什么我的代码中会出现这种情况。这不应该发生。另一方面,问题只有在出错时才会出现,这就是为什么我在代码中放了那个错误行,我确实放了它。我不确定为什么它只发生在一个错误上。我的假设是,url中的问号应该在每次单击按钮时出现,并且默认行为没有被抑制。不管怎样,我很高兴你能解决这个问题。