Home > Backend Development > PHP Tutorial > 这个代码为什么有时显示不出来刚才插入的内容?

这个代码为什么有时显示不出来刚才插入的内容?

WBOY
Release: 2016-06-06 20:15:22
Original
1029 people have browsed it

有时提交后能显示刚才插入的数据有时提交后显示不出来刚才插入的数据 等再插入一条时就把刚才没有显示的一块都显示出来了 我试了很多次 没有什么规律 这是什么原因呢 ajax的缓存还是什么?怎么解决呢?

提交页面

<code><?php $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$stmt=$pdo->prepare("select id,txt from ajax");
$stmt->execute();
$res=$stmt->fetchall(PDO::FETCH_ASSOC);
foreach($res as $v)
{
    echo $v['txt'];
}
?>



    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript">
        function ajax(url,funsucc){
            var oAjax=new XMLHttpRequest();
            oAjax.open('GET',url,true);
            oAjax.send();    
            oAjax.onreadystatechange=function(){
              if(oAjax.readyState==4){
                if(oAjax.status==200){
                  funsucc(oAjax.responseText);
                }
           }
}
}
    </script>
    <script type="text/javascript">
        window.onload=function(){
            var oTxt=document.getElementById('txt1');
            var oBtn=document.getElementById('btn1');
            oBtn.onclick=function(){
                ajax("ajaxinsert.php?id="+oTxt.value,function(){
                    window.location.reload();
                });
            }
        }
    </script>


<form>
    <input type="text" id="txt1">
    <button type="submit" id="btn1">提交</button>
</form>

</code>
Copy after login
Copy after login

插入页面

<code><?php $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$id=$_GET["id"];
$stmt=$pdo->prepare("insert into ajax(txt)values(?)");
$stmt->execute(array($id));
?></code>
Copy after login
Copy after login

回复内容:

有时提交后能显示刚才插入的数据有时提交后显示不出来刚才插入的数据 等再插入一条时就把刚才没有显示的一块都显示出来了 我试了很多次 没有什么规律 这是什么原因呢 ajax的缓存还是什么?怎么解决呢?

提交页面

<code><?php $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$stmt=$pdo->prepare("select id,txt from ajax");
$stmt->execute();
$res=$stmt->fetchall(PDO::FETCH_ASSOC);
foreach($res as $v)
{
    echo $v['txt'];
}
?>



    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript">
        function ajax(url,funsucc){
            var oAjax=new XMLHttpRequest();
            oAjax.open('GET',url,true);
            oAjax.send();    
            oAjax.onreadystatechange=function(){
              if(oAjax.readyState==4){
                if(oAjax.status==200){
                  funsucc(oAjax.responseText);
                }
           }
}
}
    </script>
    <script type="text/javascript">
        window.onload=function(){
            var oTxt=document.getElementById('txt1');
            var oBtn=document.getElementById('btn1');
            oBtn.onclick=function(){
                ajax("ajaxinsert.php?id="+oTxt.value,function(){
                    window.location.reload();
                });
            }
        }
    </script>


<form>
    <input type="text" id="txt1">
    <button type="submit" id="btn1">提交</button>
</form>

</code>
Copy after login
Copy after login

插入页面

<code><?php $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$id=$_GET["id"];
$stmt=$pdo->prepare("insert into ajax(txt)values(?)");
$stmt->execute(array($id));
?></code>
Copy after login
Copy after login

谢邀!
可能问题有两个
1、浏览器缓存,防止缓存的方式是window.location.reload(); 这一句改成location.href=当前页面的URL + "?" + (new Date).getTime()

2、是本地服务器,页面的延时约等于数据库更新的速度。
就是说,页面刷新时候的select执行的时候,insert的数据还不一定执行完。虽说是成功了,但是能select到还是有个延时的,虽然不大,但是页面刷新延时也不大,因此不一定会select到刚刚插入的数据。因此有时候会看到新插入的数据,有时候看不到。可以等个几秒钟再刷新。
测试的方法就是“插入页面”执行完insert之后,立即执行select看看输出什么。提交页面可以改为

<code>


    <meta charset="utf-8">
    <title></title>


<form action="ajaxinsert.php" method="get">
    <input type="text" id="id" name="id">
    <button type="submit" id="btn1">提交</button>
</form>

</code>
Copy after login

P.S.

<code>foreach($res as $v)
{
    echo $v['txt'];
}</code>
Copy after login

严格来说,这个输出应该写在BODY里面

哈哈,我也遇难到了

是这个刷新当前页面的方法不对吗

可以用节点调试一下,看看是哪里出了错误。可以用exit的方法来停止后续代码的执行来调试。

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template