我遇到了jQuery $ .load()的另一个问题。我有两个按钮,它们的可见性是互斥的。 PHP条件语句确定显示哪个。所有这些都包含在div元素#subDiv
中。按下任一按钮后,将运行PHP post文件(两个不同按钮的两个略有不同的文件),并将值写入数据库。然后,在成功后,我使用$.load()
刷新#subDiv
,这将(理论上)再次运行条件,并确定不存在的按钮将现在显示出来。
我的问题如下:
两个国家及其各自的帖子文件几乎完全相同,除了必要的微小差异(一个添加到数据库表,一个从数据库表中删除)。看到按钮正确地从状态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次)时,它可以追溯到我在这里描述的行为,卡在其中一个州。
答案 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();});