当前位置: 首页 > news >正文

php+Ajax 例子

PHP

<?php
$action
= $_GET['action']; switch ($action) { case 'init_data_list': init_data_list(); break; case 'add_row': add_row(); break; case 'del_row': del_row(); break; case 'edit_row': edit_row(); break; } // 列表 function init_data_list(){ $data = array(); $query = query_sql('select * from `et_data` order by `id` asc'); while($row = $query->fetch_assoc()){ $data[] = $row; } echo json_encode($data); } //删除 function del_row(){ $dataid = $_POST['dataid']; $sql = "DELETE FROM `et_data` WHERE `id` = " . $dataid; if(query_sql($sql)){ echo "ok"; } else { echo "db error ..."; } } //添加 function add_row(){ $sql = 'INSERT INTO `et_data` ( `c_a`,`c_b`,`c_c`,`c_d`,`c_e`,`c_f`,`c_g`,`c_h`) VALUES('; for($i=0; $i<8; $i++){ $sql .= '\'' . $_POST['col_' .$i] . '\', '; } $sql = trim($sql,", "); $sql .= ")"; if($res = query_sql($sql,"SELECT LAST_INSERT_ID() as LD")){ $d = $res->fetch_assoc(); echo $d['LD']; } else { echo "db error ..."; } } //修改 function edit_row(){ $sql = 'UPDATE `et_data` SET '; $id = $_POST['id']; unset($_POST['id']); for($i = 0 ; $i < 8 ; $i++){ $sql .= ' `c_' . chr(97+$i) . '` = \'' . $_POST['col_' . $i] . '\' , '; } $sql = trim($sql,", "); $sql .= ' WHERE `id` = ' . $id ; if(query_sql($sql)){ echo "ok"; } else { echo "db error ..."; } } // 初始化数据库 function query_sql(){ $mysqli = new mysqli("127.0.0.1", "root", "root", "etable"); $sqls = func_get_args(); foreach($sqls as $s){ $query = $mysqli->query($s); } $mysqli->close(); return $query; }

 

JS

$(function(){

    var g_table = $('table.data');
    var init_data_url = "data.php?action=init_data_list";

    $.get(init_data_url, function(data){
        var row_items = $.parseJSON(data);
        for (var i = 0, j = row_items.length; i < j; i++) {
            var data_dom = create_row(row_items[i]);
            g_table.append(data_dom);
        }
    });

    //删除事件
    function delHandler(){
        if (confirm('确定要删除吗?')) {
            var data_id = $(this).attr("dataid");
            var meButton = $(this);
            $.post("data.php?action=del_row",{dataid:data_id},function(res){
                    if("ok" == res)    {
                        $(meButton).parent().parent().remove();
                    } else {
                        alert("删除失败...");    
                    }
            });
        }
    }

    //修改事件
    function editHandler(){
        var data_id = $(this).attr("dataid");
        var meButton = $(this);
        var meRow = $(this).parent().parent();//没有事件

        var editRow = $("<tr></tr>");

        for (var i = 0; i < 8; i++) {
            var editTd = $("<td><input class='textField' type='text' /></td>");
            var v = meRow.find('td:eq('+ i +')').html();
            editTd.find('input').val(v);
            editRow.append(editTd);
        }

        var opt_td = $("<td></td>");
        var saveButton = $('<a class="opLink" href="javascript:">确认&nbsp;</a>');
        saveButton.click(function(){
            var currentRow = $(this).parent().parent();
            var input_fields = currentRow.find("input");
            var post_fields = {};
            for( var i = 0 , j = input_fields.length; i < j; i++){
                    post_fields['col_' + i]     = input_fields[i].value;
            }
            post_fields['id'] = data_id;
            $.post('data.php?action=edit_row',post_fields,function(res){
                if("ok" == res){
                    var newUpdateRow = create_row(post_fields);        
                    currentRow.replaceWith(newUpdateRow);
                } else {
                    alert("数据更新失败...");    
                }
            });
        });


        var canceButton = $('<a class="opLink" href="javascript:">&nbsp;取消</a>');
        canceButton.click(function(){
            var currentRow = $(this).parent().parent();
            meRow.find('a:eq(0)').click(delHandler);
            meRow.find('a:eq(1)').click(editHandler);
            currentRow.replaceWith(meRow);//需重新绑定事件
        })

        opt_td.append(saveButton);
        opt_td.append(canceButton);

        editRow.append(opt_td);
        meRow.replaceWith(editRow);
    }

    //列表
    function create_row(data_item){
        var row_obj = $("<tr></tr>");
        for(var k in data_item){
            if ("id" != k) {
                var col_td = $("<td></td>");
                col_td.html(data_item[k]);
                row_obj.append(col_td);
            }
        }

        var delButton = $('<a class="opLink" href="javascript:">删除&nbsp;</a>');
        delButton.attr("dataid", data_item['id']);
        delButton.click(delHandler);


        var editButton = $('<a class="opLink" href="javascript:">编辑&nbsp;</a>');
        editButton.attr("dataid", data_item['id']);
        editButton.click(editHandler);

        var opt_td = $('<td></td>');
        opt_td.append(delButton);
        opt_td.append(editButton);
        row_obj.append(opt_td);
        return row_obj;
    }

    // 添加
    $("#addBtn").click(function(){
        var addRow = $("<tr></tr>");

        for (var i = 0; i < 8; i++) {
            var col_td = $("<td><input type='text' class='textField' /></td>")
            addRow.append(col_td);
        }

        var col_opt = $("<td/></td>");

        var confirmBtn = $('<a class="opLink" href="javascript:">确认&nbsp;</a>');
        confirmBtn.click(function(){
            var currentRow = $(this).parent().parent();
            var input_fields= currentRow.find('input');
            var post_fields = {};
            for(var i = 0 , j = input_fields.length; i< j ; i++){
                    post_fields['col_' + i]    = input_fields[i].value;
            }
            $.post("data.php?action=add_row", post_fields, function(res){
                if( 0 < res){
                    post_fields['id'] = res;
                    var postAddRow = create_row(post_fields);
                    currentRow.replaceWith(postAddRow);
                } else {
                    alert("插入失败...");    
                }
            })
        });

        var cancelBtn = $('<a class="opLink" href="javascript:">&nbsp;取消</a>');
        cancelBtn.click(function(){
            $(this).parent().parent().remove();
        });

        col_opt.append(confirmBtn);
        col_opt.append(cancelBtn);

        addRow.append(col_opt);
        g_table.append(addRow);
    });

});

 

数据库

grant all privileges on  etable.* to 'shaddow'@'localhost' identified by '123456';
DROP DATABASE IF EXISTS aetable;
create database aetable;
use aetable;
create table et_data(
    id int primary key auto_increment,
    c_a varchar(30),
    c_b varchar(30),
    c_c varchar(30),
    c_d varchar(30),
    c_e varchar(30),
    c_f varchar(30),
    c_g varchar(30),
    c_h varchar(30)
);

LOCK TABLES `et_data` WRITE;
/*!40000 ALTER TABLE `et_data` DISABLE KEYS */;
INSERT INTO `et_data` VALUES (12,'my','heart','will','go','on','and','on','forever'),(13,'hello','world','are','you','ok','with','your','skill'),(14,'when','i','was','young','i','listen','to','the radio'),(15,'wait','for','my','faveriate','song','you','like','it'),(17,'','','吗?','','真的','','','确定?'),(18,'','','','','谢谢','','','非常'),(19,'故事','发生','','1998','','那时候','我们','都不大'),(20,'php','javascript','c','c++','python','golang','c#','java');
UNLOCK TABLES;

 

转载于:https://www.cnblogs.com/mystudy/p/7050091.html

相关文章:

  • 英语句型——口语
  • 三重积分计算--切片法
  • 关于梦想
  • 不用軟體解PPT密碼
  • 元组
  • activemq使用
  • 一个程序猿的遗嘱么?
  • Linux IO模式及 select、poll、epoll详解
  • bzoj 1600 amp; Usaco 月赛 2008 建造栅栏 题解
  • intellij idea svn 修改文件后,父文件夹也标注修改
  • VS 2015支持C语言和C++程序
  • springCloud(6):Eureka的自我保护模式、多网卡下的IP选择、Eureka的健康检查
  • 数据库笔试面试题库(Oracle、MySQL等)
  • Finance Theroy
  • lrzsz linix 远程文件传输工具。
  • 「面试题」如何实现一个圣杯布局?
  • css的样式优先级
  • echarts花样作死的坑
  • ES6系统学习----从Apollo Client看解构赋值
  • Gradle 5.0 正式版发布
  • Java IO学习笔记一
  • JavaScript HTML DOM
  • java取消线程实例
  • PHP的类修饰符与访问修饰符
  • react 代码优化(一) ——事件处理
  • 彻底搞懂浏览器Event-loop
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 基于webpack 的 vue 多页架构
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 数据科学 第 3 章 11 字符串处理
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​比特币大跌的 2 个原因
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • !!java web学习笔记(一到五)
  • #includecmath
  • #Linux(Source Insight安装及工程建立)
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • ( 10 )MySQL中的外键
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (Ruby)Ubuntu12.04安装Rails环境
  • (zhuan) 一些RL的文献(及笔记)
  • (二)丶RabbitMQ的六大核心
  • (南京观海微电子)——I3C协议介绍
  • (五)网络优化与超参数选择--九五小庞
  • (一)认识微服务
  • (转)nsfocus-绿盟科技笔试题目
  • (转)用.Net的File控件上传文件的解决方案
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .gitignore文件---让git自动忽略指定文件
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .Net core 6.0 升8.0
  • .NET Core IdentityServer4实战-开篇介绍与规划