有時提交後能顯示剛才插入的資料有時提交後顯示不出來剛才插入的資料 等再插入一條時就把剛才沒有顯示的一塊都顯示出來了 我試了很多次 沒有什麼規律 這是什麼原因呢 ajax的緩衝還是什嗎?怎麼解決呢?
提交頁面
prepare("select id,txt from ajax");$stmt->execute();$res=$stmt->fetchall(PDO::FETCH_ASSOC);foreach($res as $v){ echo $v['txt'];}?>
插入頁面
prepare("insert into ajax(txt)values(?)");$stmt->execute(array($id));?>
回複內容:
有時提交後能顯示剛才插入的資料有時提交後顯示不出來剛才插入的資料 等再插入一條時就把剛才沒有顯示的一塊都顯示出來了 我試了很多次 沒有什麼規律 這是什麼原因呢 ajax的緩衝還是什嗎?怎麼解決呢?
提交頁面
prepare("select id,txt from ajax");$stmt->execute();$res=$stmt->fetchall(PDO::FETCH_ASSOC);foreach($res as $v){ echo $v['txt'];}?>
插入頁面
prepare("insert into ajax(txt)values(?)");$stmt->execute(array($id));?>
謝邀!
可能問題有兩個
1、瀏覽器緩衝,防止緩衝的方式是window.location.reload();
這一句改成location.href=當前頁面的URL + "?" + (new Date).getTime()
2、是本機伺服器,頁面的延時約等於資料庫更新的速度。
就是說,頁面重新整理時候的select
執行的時候,insert
的資料還不一定執行完。雖說是成功了,但是能select
到還是有個延時的,雖然不大,但是頁面重新整理延時也不大,因此不一定會select
到剛剛插入的資料。因此有時候會看到新插入的資料,有時候看不到。可以等個幾秒鐘再重新整理。
測試的方法就是“插入頁面”執行完insert之後,立即執行select看看輸出什麼。提交頁面可以改為
P.S.
foreach($res as $v){ echo $v['txt'];}
嚴格來說,這個輸出應該寫在BODY裡面
哈哈,我也遇難到了
是這個重新整理當前頁面的方法不對嗎
可以用節點調試一下,看看是哪裡出了錯誤。可以用exit的方法來停止後續代碼的執行來調試。