$ .post()内的jQuery语句无法正常工作

时间:2013-04-01 17:33:40

标签: php javascript jquery html post

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

$(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文件时,div fnbtn在第一次按下Esc时成功更改。但是当第二次按下Esc时,div fnbtn无法更改。我认为这与$.post()请求有关。

但是当我包含alert()语句(目前已被注释掉)时,一切正常,我可以看到所做的更改,然后按下警告框上的OK按钮

这个问题的原因是什么?是否因为$.post()请求在$("#fnbtn").replaceWith()$("#disp").append()语句执行之前完成而导致?以及alert()如何有所作为?

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

1 个答案:

答案 0 :(得分: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()的唯一区别在于,在用户单击“确定”之前,页面将被停止执行。这让我觉得可能还有其他一些脚本与这个脚本发生冲突。