【问题标题】:Page keeps refreshing after onclick eventonclick事件后页面不断刷新
【发布时间】:2026-02-10 08:00:02
【问题描述】:

我有一个登录页面,您可以在其中选择您来自哪个国家(单击按钮),然后被重定向到相应的页面。它还会设置一个 cookie,并在您下次访问登录页面时记住您的选择

当您点击进入您选择的页面时,它会不断刷新页面...

我无法理解页面的重新加载来自何处 - 但我认为它可能来自按钮单击事件。

下面是我正在使用的。

            jQuery(window).load(function () {

                        var url = 'http://expatri8.com/';
                        var UK_page = 'UK';
                        var AUS_page = 'AUS';
                        var NZ_page = 'NZ';
                        var ZA_page = 'ZA';

                        if (Cookies.get('default_page') != null) {
                            if (window.location.href != url + '/' + Cookies.get('default_page')) {
                                window.location.href = url + '/' + Cookies.get('default_page');

                            }
                        }

                      jQuery('#set_UK_butt').click(function () {

                            Cookies.set('default_page', UK_page, {expires: 999});
                    //alert('UK');
                          jQuery(location).attr('href', 'http://expatri8.com/UK')
                   //  window.location.replace= 'http://expatri8.com/UK';

                                });

                        jQuery('#set_AUS_butt').click(function () {
                            Cookies.set('default_page', AUS_page, {expires: 999});
                            alert('AUS');
                        });


                        jQuery('#set_NZ_butt').click(function () {
                            Cookies.set('default_page', NZ_page, {expires: 999});
                            alert('NZ');
                        });


               jQuery('#set_ZA_butt').click(function () {
                            Cookies.set('default_page', ZA_page, {expires: 999});
                            alert('ZA');
                        });

             });

任何帮助将不胜感激。

【问题讨论】:

    标签: jquery redirect onclick


    【解决方案1】:

    防止发生默认按钮单击事件(发送后请求)。在你的情况下:

    jQuery('#set_ZA_butt').on("click", function (event) {
        event.preventDefault();
        Cookies.set('default_page', ZA_page, {expires: 999});
        alert('ZA');
    });
    

    【讨论】:

    • 所以,“保持刷新”[暗示:无限地]不是指它“保持”刷新,而是刷新一次......
    • 另一种方法是将按钮从 <button type="submit"> 更改为 <button type="button">
    • 我一定是看错了发帖者的问题。他们显然不必单击刷新页面的按钮。我很抱歉。
    • 从措辞中不清楚 - 我会假设和你一样 - 它在提交时重新加载(一次),由运行 ajax 提交的按钮引起。在我之前还有来自 OP 的另一条评论说这解决了它。
    【解决方案2】:

    使用window.location.pathname获取路径对应的url部分(不带http/https,不带域,不带查询字符串,不带hash),所以可以针对Cookies.get('default_page')进行测试

    【讨论】:

    • 谢谢,你能用我正在使用的代码对此进行扩展吗?
    • 您可以将if (window.location.href != url + '/' + Cookies.get('default_page')) { 替换为if (window.location.pathname != '/' + Cookies.get('default_page')) {。顺便说一句,url 已经包含斜杠,所以你最终将http://expatri8.com/UKhttp://expatri8.com//UK 进行比较,这将失败。尝试使用console.log() 调试这类东西。