当我按下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()
如何有所作为?
感谢您的帮助。提前致谢。 : - )
答案 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()
的唯一区别在于,在用户单击“确定”之前,页面将被停止执行。这让我觉得可能还有其他一些脚本与这个脚本发生冲突。