phpAjax 例子

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);
    });

});
时间: 2024-10-13 10:51:06

phpAjax 例子的相关文章

Android小例子:使用反射机制来读取图片制作一个图片浏览器

效果图: 工程文件夹: 该例子可供于新手参考练习,如果有哪里不对的地方,望指正>-< <黑幕下的人> java代码(MainActivity.java): package com.example.imageswitchtest; import java.lang.reflect.Field; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.v

JSON 简单例子

代码: json [ { "title" : "a", "num" : 1 }, { "title" : "b", "num" : 1 }, { "title" : "c", "num" : 1 }] 例子1 js var box=[ { title:'a', num:1, height:177, }, { title:'b',

最简单的基于FFmpeg的AVDevice例子(读取摄像头)【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/39702113 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] libavdevice使用 注意事项 代码 结果 下载 =====================================================最简单的基于FFmpeg的AVDevice例子文章列表: 最简单的基于FFmpeg的AVDevice例子(读取摄像头) 最简单的基于FFm

Clustering by Passing Messages Between Data Points(Brendan J.Frey* and Delbert Dueck)例子

例1,数据点聚类:AP应用到25个二维数据中,使用负平法误差作为相似度  聚类数目不用预先指定 AP的一个优点是聚类数目不用预先指定,而是在消息传递方法中慢慢浮现,取决于输入参考度(preference),这种自动模型的选择,基于先验指定每一个数据点有多合适作为exemplar. 下图表示输入常量参考度对聚类数目的影响,这种关系近乎同样于在精确最小平方误差中的关系. 例2,人脸识别:使用优化标准为均方差,识别900张灰度图像   AP一致的能够实现更低的误差,在时间上花费要少于两个数量级. AP

Python之路42-socket介绍及简单例子

socket对数据的底层收.发做了封装 实现通信要通过IP+port 一个socket服务端和客户端实现的伪代码 # 发送端 # import socket # socket.TCP/IP # connect(a.ip,a.port) # socket.send("hello") # socket.recv() # socket.close() # 接收端 # import socket # socket.TCP/IP # listen(0.0.0.0,6969) # waiting(

c语言一个例子对比php学习随记

今天开始学写一些简单的C例子,发现很多和PHP不一样的地方,做个笔记. #include <stdio.h> int main(void) { int a,b; printf("请输入整数a"); //这里是用双引号,不能用单引号,PHP类似的地方可以用单引号,这里需注意 scanf("%d",&a); //获取用户输入值存入a printf("请输入整数b"); scanf("%d",&b);//

判断当前进程是否以管理员权限运行(AllocateAndInitializeSid后,用CheckTokenMembership与AdministratorsGroup进行比较,和Delphi的那个例子还有点不一样)

在Win7下(Vista以上的...)有时某些操作就是会让人郁闷 开启了UAC的话,得以管理员权限运行才不会出现Access is denied... 但是,程序又不是非得什么时候都用那破管理员权限的 总不能在manifest里加权限,然后用户运行时老弹确认吧? 当然啦,可以将需要管理员权限的部分写到另一个小程序,需要时调用它就行了 不过还是不爽,如果是一个小小的程序还要再加另一个小小小程序的话 那好,干脆判断是不是Win7...开启了UAC没有之类 开启的话再判断下是不是以管理员权限运行,不是

Web前端入门学习(6)——浮动例子之鉴赏

浮动例子之鉴赏 在浮动原理及清除浮动一文中(http://cherry360.blog.51cto.com/12176744/1864258),简单介绍了浮动的相关基础知识,为了巩固知识点,本篇结合代码展示关于浮动的几个常见例子. 例1:九格子 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>九格子</titl

【Bootstrap Demo】入门例子创建

本文简单介绍下如何来使用 Bootstrap,通过引入 Bootstrap,来实现一个最基本的入门例子. 在前一篇博文[Bootstrap]1.初识Bootstrap 基础之上,我们完全可以更加方便快捷的创建一个的简单例子.这个例子只有基本的东西:引入了预编译版的 CSS 和 JavaScript 文件,页面只包含了一个 container 元素. 在Bootstrap的官方网站的下载页面 http://getbootstrap.com/getting-started/#download ,也有