JQuery移动缓存问题,除非重新加载页面,否则不会触发onClick

JQuery移动缓存问题,除非重新加载页面,否则不会触发onClick,jquery,jquery-mobile,Jquery,Jquery Mobile,好的,首先让我假设这与缓存有关。但我不是100%确定 我在一个移动网站上工作,你可以查看 问题是注销,请准确地单击注销按钮 如果用户登录,导航到站点上的任何页面,然后尝试单击注销(请参阅下面的函数),他们将一无所获。没有发布,没有重新定位,如果我在函数中添加了警报,它将不会运行。没有什么。除非用户重新加载页面并尝试注销 function submitLogout(){ $.post("../server/log.php", { uaction: "logout" },function(d

好的,首先让我假设这与缓存有关。但我不是100%确定

我在一个移动网站上工作,你可以查看

问题是注销,请准确地单击注销按钮

如果用户登录,导航到站点上的任何页面,然后尝试单击注销(请参阅下面的函数),他们将一无所获。没有发布,没有重新定位,如果我在函数中添加了警报,它将不会运行。没有什么。除非用户重新加载页面并尝试注销

function submitLogout(){
    $.post("../server/log.php", { uaction: "logout" },function(data){
        window.location = "/index.php";
    }); 
}
复制步骤:

  • 拜访
  • 单击登录
  • 使用用户名foo、密码栏登录
  • 导航到提供的任何链接
  • 单击注销
  • 现在,如果您确实希望看到预期的函数调用,只需重新加载页面并单击注销

    或者,在步骤4,单击注销,而不是导航离开

    **再次澄清** submitLogout函数从未实际运行过;如果我将函数更改为

    function submitLogout(){
        alert("wtf");
        $.post("../server/log.php", { uaction: "logout" },function(data){
            window.location = "/index.php";
        }); 
    }
    

    警报永远不会被调用。如果相对路径有问题,我就不知道了。这个职位从来没有人打过电话。我已经在函数上添加了一个断点,我可以确认它从未被输入。

    您使用对
    log.php
    的相对引用:
    “./server/log.php”

    您可以依赖相对路径,但始终要考虑引用的内容。在本例中,它是当前URL客户端的位置,而不是JS文件的路径

    在您的情况下,解决方案包括将
    部分替换为
    /bin
    ,这是端点所在的文件夹

    以下是完整的修复方法:

    function submitLogout() {
      alert('submitLogout is triggered');
      $.post("/bin/server/log.php", { uaction: "logout" },function(data){
        window.location = "/index.php";
      }); 
    }
    

    当绕过步骤2-4时,会出现相同的错误。在未登录的情况下单击“注销”会产生相同的错误:试图到达不远处时出现404错误状态?佩奇,我不明白。。奇怪。你在哪个浏览器上测试这个。那将是Chrome15,我在开发者工具的“网络”区域得到这个。我运行Chrome13,没有404错误。FF 6也没有显示404。我怎么能问你有Chrome15吗?我会担心稳定的版本。对我来说,13年的支持很好,但这不起作用。就像我在函数本身之前说过的,它没有被触发!如果我将
    警报(“注销”)
    放在从未点击的帖子之前。如果路径错误,为什么登录时发布到相同的相对路径,或者刷新页面会修复错误?@rlemon我修复了我的代码。我忘了在整个AJAXy内容之前添加“/”。我在你的网站上测试了它,在不同的情况下。一切顺利。考虑用这个函数替换当前的函数并让我们知道结果吗?那么为什么这对登录函数(同样的函数,不同的UAct)工作呢?为什么当我刷新页面时,它也会工作,或者没有导航到子页面?顺便说一句,上次的更新成功了。实际上,如果您从控制台将步骤5替换为“call
    submitLogin()
    ”(以便模拟单击登录按钮),您将看到它也不起作用。所以这根本不是关于注销按钮的问题。这显然是关于当前路径的,出于一些神秘的原因,jQueryMobile必须根据“浏览历史”对其进行不同的设置。考虑到这一点,你应该考虑为登录方法使用相同的解决方案,以防万一。