zoukankan      html  css  js  c++  java
  • Ajax:后台jquery实现ajax无刷新删除数据及demo

      

      上图是后台管理的新闻展示页面,现在删除数据的时候会整个页面刷新一遍,感觉很不友好,理想状态是点击右侧的删除,局部刷新删除这条数据即可。网上这方面的资料还是不多,所以写一篇总结。

      那么问题来了,局部刷新技术是ajax,用jquery实现ajax更加方便有效,所以先决定使用jquery+ajax完成(最后会介绍一下js的ajax原理)。

      1)修改删除功能的a链接,修改为<a class='del {$row['id']}' num='{$row['id']}' href='javascript:'>删除</a>,代码如下

    php页面如下

    <?php 
                    foreach($pdo->query($sqlNews) as $row){
                        
                        echo "<tr id='tr{$row['id']}'>";
                        echo "<td>{$row['id']}</td>";
                        echo "<td>{$row['title']}</td>";
                        
                        echo "<td>{$row['abstract']}</td>";
                        echo "<td>{$row['level1']}</td>";
                        echo "<td>{$row['level2']}</td>";
                        echo "<td>{$row['level3']}</td>";
    
                        if($row['shelf']){
                            echo "<td>上墙</td>";
                        }else{
                            echo "<td>下墙</td>";
                        }
    
                        echo "<td>".date('Y-m-d',$row['regtime'])."</td>";
                        echo "<td><a href='edit.php?id={$row['id']}'>修改</a></td>";
                        // echo "<td><a href='delete.php?id={$row['id']}&image={$row['imgsrc']}'>删除</a></td>";
                        echo "<td><a class='del {$row['id']}' num='{$row['id']}' href='javascript:'>删除</a></td>";
                        echo "</tr>";
                    }

      2)Jquery点击事件响应删除的a链接,具体代码如下

    jquery代码如下:

    <script type="text/javascript">
        
         $(function(){
            //按钮单击时执行
            $(".del").click(function(){
                  num =$(this).attr('num');
                  htmlobj=$.ajax({url:"delete.php?id="+num,async:false});
                  if (htmlobj.responseText=="success") {
                       $("#tr"+num).hide();
                  }
             });
        });
    </script>

      3)后台响应的代码如下

    <?php 
    
    $id=$_GET['id'];
    $sqlNews="delete from news where id={$id}";
    if($pdo->exec($sqlNews)){
        echo "success";
    }else{
        echo "failed";
    }
     ?>

      下面单独介绍一下jquery+ajax  和 js+ajax的小demo

      1)jquery+ajax 的小demo

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset='utf8'>
    <script src="jquery.min.js" />
    
    <script>
    
    
    $(document).ready(function(){
    })
    </script>
    
    </head>
    
    <body>
    
    <h3 id="test">请点击下面的按钮,通过 jQuery AJAX 改变这段文本。</h3>
    <button id="btn1" type="button">获得外部的内容</button>
    
    </body>
    
    <script type="text/javascript">
        
         $(function(){
            //按钮单击时执行
            $("#btn1").click(function(){
    
                  //取Ajax返回结果
                  //为了简单,这里简单地从文件中读取内容作为返回数据
                  htmlobj=$.ajax({url:"a.txt",async:false});
                   //显示Ajax返回结果
                   $("#test").html(htmlobj.responseText);
             });
        });
    </script>
    </html>

      2)js+ajax的小demo

    <html>
    <head>
    <meta charset = 'utf-8'>
    <script type="text/javascript">
    function loadXMLDoc()
    {
    var xmlhttp;
    var txt,x,i;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        xmlDoc=xmlhttp.responseXML;
        txt="";
        x=xmlDoc.getElementsByTagName("title");
        for (i=0;i<x.length;i++)
          {
          txt=txt + x[i].childNodes[0].nodeValue + "<br />";
          }
        document.getElementById("myDiv").innerHTML=txt;
        }
      }
    xmlhttp.open("GET","books.xml",true);
    xmlhttp.send();
    }
    </script>
    </head>
    
    <body>
    
    <h2>My Book Collection:</h2>
    <div id="myDiv"></div>
    <button type="button" onclick="loadXMLDoc()">获得我的图书收藏列表</button>
     
    </body>
    </html>
  • 相关阅读:
    Error[e46]: Undefined external "?V1" referred in AF
    总是遇到奇怪问题一
    BrokenPipeError: [Errno 32] Broken pipe
    Segment BANKED_CODE must be defined in a segment definition option (-Z, -b or -P)
    使用jupyter打开已存在的ipynb文件
    时钟控制命令
    中断系统以及外部中断
    pytorch上的循环层和全连接层操作
    02池化层
    距离毕业还有---100天
  • 原文地址:https://www.cnblogs.com/rongyux/p/5334732.html
Copyright © 2011-2022 走看看