ホームページ >ウェブフロントエンド >jsチュートリアル >PHP Ajaxでテーブルのリアルタイム編集を実現

PHP Ajaxでテーブルのリアルタイム編集を実現

韦小宝
韦小宝オリジナル
2018-01-01 19:39:411622ブラウズ

この記事では、テーブルのリアルタイム編集を実現するための Ajax の方法を主に紹介します。これは、Ajax を学習するのに良い参考と価値があります。エディターをたどって、PHP Ajax がテーブルのリアルタイム編集をどのように実装するかを見てみましょう

このページのテーブル内のすべてのデータを操作できたらどんなに素晴らしいでしょう (それを使用するのは非常にクールです) チキン楽しみ)!

この機能はAjaxを使用して実現できます。さっそく、私が書いたデモを以下に投稿させてください(笑)。私は、使用している TP フレームワーク (3.2) のほうに慣れています。

最初は HTML コード部分です:


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>AJAX实时编辑</title>
<script src="/Public/jquery-1.7.2.min.js"></script>
</head>
<body>
<center>
<table border="1" width="1000" id="g_table">
<tr>
<!-- <th>ID</th> -->
<th>TAB1</th>
<th>TAB2</th>
<th>TAB3</th>
<th>TAB4</th>
<th><span onclick="add()">添加</span></th>
</tr>
<foreach name="tablist" item="vv">
<tr>
<!-- <td>{$vv.id}</td> -->
<input type="hidden" name="id" value="{$vv.id}">
<td>{$vv.tab1}</td>
<td>{$vv.tab2}</td>
<td>{$vv.tab3}</td>
<td>{$vv.tab4}</td>
<td><span onclick="del(this)" id="del">删除</span><span onclick="edit(this)" id="edit">修改</span></td>
</tr>
</foreach>
</table>
</center>
</body>
<script>
var g_table = $("#g_table");
function add(){
var addRow = $("<tr></tr>");

g_table.append(addRow);
for(var i = 0;i < 4;i++){
var col_td = $("<td><input type=&#39;text&#39; /></td>");
addRow.append(col_td);
}
var col_opt = $("<td></td>");
var confirmBtn = $("<a href=&#39;javascript:;&#39;>确认</a>");
var cancelBtn = $("<a href=&#39;javascript:;&#39;>取消</a>");
cancelBtn.click(function(){
window.location.reload();
});
confirmBtn.click(function(){
var currentRow = $(this).parent().parent();
var input_files = currentRow.find("input");
var post_files = {};
for(var i = 0 , j = input_files.length;i < j;i++){
post_files[&#39;clo_&#39; + i] = input_files[i].value;
}
// $.post("{:U(&#39;ajax/add&#39;)}",post_files,function(msg){
// debugger;
// })
$.ajax({
type: &#39;post&#39;,
url : "{:U(&#39;ajax/add&#39;)}",
data: {post_files},
success:function(msg){
alert(msg);
window.location.reload();
}
})
});
col_opt.append(confirmBtn);
col_opt.append(cancelBtn);
addRow.append(col_opt);
}
function del(obj){
var id = $(obj).parent().prev().prev().prev().prev().prev().val();
$.ajax({
type: &#39;post&#39;,
url: "{:U(&#39;ajax/del&#39;)}",
data: {id:id},
success:function(msg){
alert(msg);
}
})
$(obj).parent().parent().remove();
}
function edit(obj){
var id = $(obj).parent().prev().prev().prev().prev().prev().val();
for(var i = 1;i < 5;i++){
var temp = "<td><input type=&#39;text&#39; value=&#39;" + $(obj).parent().parent().children().eq(i).html() + "&#39;/></td>";
$(obj).parent().parent().children().eq(i).replaceWith(temp);
}
var confirmBtn1 = $("<span id=&#39;confirm&#39;>确认</span>");
var cancelBtn1 = $("<span onclick=&#39;back()&#39;>取消</span>");
confirmBtn1.click(function(){
var currentRow = $(this).parent().parent();
var input_files = currentRow.find("input");
var post_files = {};
for(var i = 0 , j = input_files.length;i < j;i++){
post_files[&#39;clo_&#39; + i] = input_files[i].value;
}
$.ajax({
type: &#39;post&#39;,
url : "{:U(&#39;ajax/edit&#39;)}",
data: {post_files:post_files,id:id},
success:function(msg){
alert(msg);
window.location.reload();
}
}) 
});
$(obj).prev().replaceWith(confirmBtn1);
$(obj).replaceWith(cancelBtn1);

}
function back(){
location.reload();
} 
</script>
</html>


以下はコントローラー内のコードです:

<?php 

namespace Home\Controller;
use Think\Controller;
class AjaxController extends Controller{
public function index(){
$tab = M(&#39;table&#39;);
$tablist = $tab->select();
$this->assign(&#39;tablist&#39;,$tablist);
$this->display();
}
public function del(){
$map[&#39;id&#39;] = $_POST[&#39;id&#39;];
$tab = M(&#39;table&#39;);
$info = $tab->where($map)->delete();
if($info){
$this->ajaxReturn("删除成功");
}else{
$this->ajaxReturn("删除失败");
}

}
public function add(){

$map[&#39;tab1&#39;] = $_POST[&#39;post_files&#39;][&#39;clo_0&#39;];
$map[&#39;tab2&#39;] = $_POST[&#39;post_files&#39;][&#39;clo_1&#39;];
$map[&#39;tab3&#39;] = $_POST[&#39;post_files&#39;][&#39;clo_2&#39;];
$map[&#39;tab4&#39;] = $_POST[&#39;post_files&#39;][&#39;clo_3&#39;];
$tab = M(&#39;table&#39;);
$res = $tab->add($map);
if($res){
$this->ajaxReturn("添加成功");
}else{
$this->ajaxReturn("添加失败");
}
}
public function edit(){
$id = $_POST[&#39;id&#39;];
$map[&#39;tab1&#39;] = $_POST[&#39;post_files&#39;][&#39;clo_1&#39;];
$map[&#39;tab2&#39;] = $_POST[&#39;post_files&#39;][&#39;clo_2&#39;];
$map[&#39;tab3&#39;] = $_POST[&#39;post_files&#39;][&#39;clo_3&#39;];
$map[&#39;tab4&#39;] = $_POST[&#39;post_files&#39;][&#39;clo_4&#39;];
// dump($map);exit;
$tab = M(&#39;table&#39;);
$res = $tab->where(&#39;id=&#39;.$id)->save($map);
if($res){
$this->ajaxReturn("更新成功");
}else{
$this->ajaxReturn("更新失败");
}
}
}

上記はこの記事のすべての内容です。お役に立てれば幸いです。みんなに!

関連する推奨事項:

Ajaxとjsonpの使用方法のまとめ

Ajaxでファイルを非同期にダウンロードする簡単な方法

Ajaxの電子メールとユーザー名の一意性検証方法を説明する例


以上がPHP Ajaxでテーブルのリアルタイム編集を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。