Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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
Php jQuery$.load()出现奇怪的问题;_Php_Jquery - Fatal编程技术网

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

Php jQuery$.load()出现奇怪的问题;,php,jquery,Php,Jquery,我遇到了jQuery$.load的另一个问题。我有两个按钮,它们的可见性是相互排斥的。PHP条件语句决定显示哪个。所有这些都包含在div元素subDiv中。按下任意一个按钮后,将运行一个PHP post文件,为两个不同的按钮运行两个稍微不同的文件,并将值写入数据库。然后,在post成功后,我使用$.load刷新subDiv,这在理论上会再次运行条件,并确定最后不在那里的按钮现在将显示 我的问题如下: 当我在状态A中单击按钮时,它将正确发布,并刷新div以显示状态B中的按钮。 当我单击处于状态B的

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

我的问题如下:

当我在状态A中单击按钮时,它将正确发布,并刷新div以显示状态B中的按钮。 当我单击处于状态B的按钮时,它将正确发布,并根据Chrome Dev工具刷新div,但按钮仍处于状态B。在实际浏览器刷新时,按钮将以正确的状态显示。 这两个状态及其各自的post文件几乎相同,除了添加到数据库表和从数据库表中删除所需的微小差异。鉴于按钮正确地从状态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次,它回到了我在这里描述的行为,停留在其中一个状态。

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

例如,未测试:

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

我一直无法让.load函数在返回dom的特定部分时工作。每次都失败了。自从1.5发布以来,我就没有尝试过,但这可能与你的问题有关。也许我正在尝试重新发明轮子?其他网站如何处理像我这样的情况,如果这种方法是如此的芬尼基?你有没有在Firebug w/net access打开和一些console.log中看到这一点?在我看来,您似乎遇到了一些怪癖,因为正在发生异步的事情,而您希望这些事情是同步的。我会尝试使用$.get重写它,以便您可以更轻松地检查流程的每个步骤,例如,查看返回的数据是否正确,选择器是否工作。从$.load文档来看,它与$.geturl、data、success基本相同