0

fnbtn当按下 Esc 键时,我的 jQuery 脚本中有以下代码对 div 进行了一些更改:

$(document).keypress(function(e){
  if(e.keyCode==27) {
    if(window.discon==0)
    {
    window.discon = 1;
    $("#fnbtn").replaceWith("<div id=\"fnbtn\"><p id=\"fnbtnp\">The variable is one...<br>Blah blah...<\/p><\/div>");
        }
    else if(window.discon==1)
    { 
    window.discon=2;
    $.post(
      'do.php',
      {doit: 4, uid: window.uid},
      function(rcvd) { 
        $("#fnbtn").replaceWith("<div id=\"fnbtn\"><p id=\"fnbtnp\">The variable is two...<br>Blah blah...<\/p><\/div>");
        $("#disp").append("<p><span id=\"cmnt2\">"+rcvd+"</span></p>");
        });
    //alert("Alert something here");
    }
  }
 });

disp$.post是从请求中接收到的数据附加到的另一个 div 。该do.php文件包含一些 mysql 查询和以下语句:

echo "This is the data returned from the do.php file";

这是我的问题。当我将此脚本放在我的 php 文件中时,第一次fnbtn按下时 div 会成功更改。Esc但是当Esc第二次按下时,divfnbtn没有改变。我认为这与$.post()请求有关。

但是当我包含该alert()语句(当前已被注释掉)时,一切正常,并且在我按下OK警报框上的按钮之前,我可以看到所做的更改。

这个问题的原因是什么?是因为$.post()请求在$("#fnbtn").replaceWith()and$("#disp").append()语句执行之前完成引起的吗?以及如何包括在内alert()

感谢您的帮助。提前致谢。:-)

4

1 回答 1

0

如果您设置window.discon = 2了这是否意味着if(window.discon == 0)并且if(window.discon == 1)将返回 false 并且不会第二次运行?我已经尝试过你的代码,对我来说它可以正常工作到上面提到的部分。添加alert()似乎没有任何区别,尽管它确实在$.post()完成之前运行。

不管我在那里说什么,我似乎也不太明白你到底指的是什么。

在玩了一点代码之后,我没有发现它有任何问题,所以可能是因为您拥有的脚本不同。对我来说,无论有没有alert()

您可以尝试使用代码玩一点,还可以添加一个.fail功能

 $.post('do.php', {doit: 4, uid: window.uid}, function(rcvd) {
           $rcvd = rcvd;
        }).done(function(){
           $("#fnbtn").replaceWith("<div id=\"fnbtn\"><p id=\"fnbtnp\">The variable is two...<br>Blah blah...<\/p><\/div>");
           $("#disp").append("<p><span id=\"cmnt2\">" + $rcvd + "</span></p>");            
        }).fail(function(){
            alert('Could not reach do.php');        
       });

唯一的区别alert()是页面被停止执行,直到用户单击确定。这让我觉得可能还有其他一些脚本与这个发生冲突。

于 2013-04-02T12:33:20.877 回答