我從我的jQuery腳本下面的代碼時,按Esc鍵被按下,使得一些改變一個div fnbtn
,:jQuery的語句()無法正常工作
$(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
是另一個DIV附加從$.post
請求收到的數據。該do.php
文件包含一些MySQL的查詢,並聲明如下:
echo "This is the data returned from the do.php file";
這裏是我的問題。當我把這個腳本放在我的php文件中時,第一次按Esc
時div fnbtn
成功更改。但是當第二次按下Esc
時,div fnbtn
無法更改。我認爲這與$.post()
請求有關。
但是,當我包括alert()
聲明(目前已被註釋掉),一切正常,我可以看到所做的更改,然後按下警報框上的OK
按鈕。
這個問題的原因是什麼?這是否是因爲在執行$("#fnbtn").replaceWith()
和$("#disp").append()
語句之前$.post()
請求已完成而引起的?以及如何包括alert()
有所作爲?
您的幫助表示讚賞。提前致謝。 :-)
我看不到如何添加該警報()會改變這是如何工作或不工作。我很想看看其他人說什麼。 – iGanja
如果警報有所作爲,那麼這是一個非常好的指示,表明這是異步環境中的競爭條件或同步代碼。你確定你的頁面不爽嗎? –
我確定我的頁面不夠清爽。但是,如果滿足特定的條件,它會不斷(每秒)查詢一個表格,並將一行或兩行文本附加到'#disp'。當你再次按下Esc鍵時,你是否認爲停止這個查詢,然後_then_嘗試以上操作將會起作用?但我認爲,因爲它的jQuery,它實際上並沒有刷新整個頁面,也沒有'#disp',只是附加到它。這有什麼區別嗎?@KevinB – rktcool