Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干添加?发生错误时在页面url之后_Javascript_Jquery_Url_Backbone.js_Requirejs - Fatal编程技术网

Javascript 主干添加?发生错误时在页面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

我在运行代码时遇到了一个奇怪的错误。我正在使用一个带有Backbone.js和RequireJS的应用程序。当代码(any)中出现错误时会出现问题,主干或jquery是否会重定向到现有url并添加问号?在页面名称的末尾:

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中的问号应该在每次单击按钮时出现,并且默认行为没有被抑制。不管怎样,我很高兴你能解决这个问题。