jQuery $ .load()的奇怪问题;

时间:2011-04-19 19:02:13

标签: php jquery

我遇到了jQuery $ .load()的另一个问题。我有两个按钮,它们的可见性是互斥的。 PHP条件语句确定显示哪个。所有这些都包含在div元素#subDiv中。按下任一按钮后,将运行PHP post文件(两个不同按钮的两个略有不同的文件),并将值写入数据库。然后,在成功后,我使用$.load()刷新#subDiv,这将(理论上)再次运行条件,并确定不存在的按钮将现在显示出来。

我的问题如下:

  • 当我在状态A中点击按钮时,它会正确发布,并刷新div以显示状态B中的按钮。
  • 当我在状态B中点击按钮时,它会正确发布,并刷新div(根据Chrome开发工具),但按钮保持在状态B.实际浏览器刷新后,按钮将出现在正确的状态。

两个国家及其各自的帖子文件几乎完全相同,除了必要的微小差异(一个添加到数据库表,一个从数据库表中删除)。看到按钮正确地从状态A变为状态B,但不是相反,我不确定问题出在哪里。更复杂的是,浏览器刷新会显示处于正确状态的按钮。我自己使用$.load()来模拟只有一个div元素的浏览器刷新,以实现可用性并减少负载。因此,我只能假设它是$.load()方法的错误。

这是控制状态A和状态B的按钮点击处理的jQuery代码:

     //State A
     $('#subButton').live('click',function() {
        $.post("php/retailerNameNotif.php", $("#retailerNameNotif").serialize(), function(){
            $('#retailerNameSubDiv').load('coupon.php #retailerNameSubDiv', function(){$( "button, input:submit, input:button, a#jql, input:radio" ).button();});  
        });            
    });

    //State B
    $('#unsubButton').live('click',function() {
        $.post("php/retailerNameNotifUnsub.php", $("#retailerNameNotifUnsub").serialize(), function(){ 
            $('#retailerNameSubDiv').load('coupon.php #retailerNameSubDiv', function(){$( "button, input:submit, input:button, a#jql, input:radio" ).button();});      
        });      
    });

任何帮助?

修改: 作为一个进一步的复杂性,我注意到偶尔,它将正常工作,完全按照我的意愿切换状态。然而,在第6次(并且始终是第6次)时,它可以追溯到我在这里描述的行为,卡在其中一个州。

1 个答案:

答案 0 :(得分:0)

我的猜测是浏览器正在缓存load()调用的结果。 您可以尝试在文件名中插入一个随机字符串,以确保每次都发出请求。

例如(未经测试):

var rnd = Math.random()
$('#retailerNameSubDiv').load('coupon.php?rnd=' + rnd + ' #retailerNameSubDiv', function(){$( "button, input:submit, input:button, a#jql, input:radio" ).button();});