最近在做前后端數(shù)據(jù)交互的嘗試,也跳了很多坑,使用的是php+bootstrap-table+js,把一些收獲記錄在這里,方便查詢。
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的濰坊網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!這個(gè)小項(xiàng)目,僅有3個(gè)文件,分別為:
1.crud.html
2.data.php
3.crud.sql
數(shù)據(jù)交互實(shí)現(xiàn)1:查詢
1.mysql 數(shù)據(jù)庫(kù)建表
2.php查詢接口
3.前端數(shù)據(jù)展現(xiàn)
mysql 數(shù)據(jù)庫(kù)建表
數(shù)據(jù)庫(kù)名稱:crud第一個(gè)表名:t_users主鍵:user_id,自增長(zhǎng)排列php:
fetch_assoc()){ $data[] = $row; } $json = json_encode(array( "resultCode"=>200, "message"=>"查詢成功!", "data"=>$data ),JSON_UNESCAPED_UNICODE); //轉(zhuǎn)換成字符串JSON echo($json); } /**查詢服務(wù)器中的數(shù)據(jù) * 1、連接數(shù)據(jù)庫(kù),參數(shù)分別為 服務(wù)器地址 / 用戶名 / 密碼 / 數(shù)據(jù)庫(kù)名稱 * 2、返回一個(gè)包含參數(shù)列表的數(shù)組 * 3、遍歷$sqls這個(gè)數(shù)組,并把返回的值賦值給 $s * 4、執(zhí)行一條mysql的查詢語(yǔ)句 * 5、關(guān)閉數(shù)據(jù)庫(kù) * 6、返回執(zhí)行后的數(shù)據(jù) */ function query_sql(){ $mysqli = new mysqli("127.0.0.1", "root", "root", "crud"); $sqls = func_get_args(); foreach($sqls as $s){ $query = $mysqli->query($s); } $mysqli->close(); return $query; } ?>
前端實(shí)現(xiàn):
增刪改查
實(shí)現(xiàn)效果:
數(shù)據(jù)交互實(shí)現(xiàn)2:刪除
在做刪除時(shí)遇到不少的坑,究其原因是因?yàn)閷?duì)SQL語(yǔ)句不熟悉,對(duì)php不熟悉,不過(guò),總結(jié)了以下幾點(diǎn),供參考:
1.delete 返回的參數(shù)只能用 $_GET 獲?。?/p>
2.delete 返回的參數(shù)要放在URL中,不能放在body中;body中的參數(shù)是用來(lái)查詢的;
3.SQL語(yǔ)句一定要熟練,一步錯(cuò),步步錯(cuò);
4.要在數(shù)據(jù)庫(kù)中執(zhí)行SQL語(yǔ)句檢查語(yǔ)句是否執(zhí)行正確,要使用 Rest Client 測(cè)試URL請(qǐng)求是否正確;
php:
前端實(shí)現(xiàn)JS部分:
var $table = $('#table'), $remove = $('#remove'); $(function() { delData(); }); function delData() { $remove.on('click', function() { if(confirm("是否繼續(xù)刪除")) { var rows = $.map($table.bootstrapTable('getSelections'), function(row) { //返回選中的行的索引號(hào) return row.user_id; }); } $.map($table.bootstrapTable('getSelections'),function(row){ var del_url = "./php/data.php"; //根據(jù)userId刪除數(shù)據(jù),因?yàn)檫@個(gè)id就是 傳給服務(wù)器的參數(shù) var rowId = row.user_id; $.ajax({ type:"delete", url:del_url + "?action=del_row&rowId=" + rowId, dataType:"html", contentType: 'application/json;charset=utf-8', success: function(data) { $table.bootstrapTable('remove',{ field: 'user_id', values: rows }); $remove.prop('disabled', true); }, error:function(data){ alert('刪除失??!'); } }); }); }) }
調(diào)試方法:
數(shù)據(jù)交互實(shí)現(xiàn)3:新增
在寫(xiě)php的方法上,我覺(jué)得我的方法是有問(wèn)題的,因?yàn)樗械膮?shù),也就是所有的需要新增的數(shù)據(jù)都是通過(guò) 接口以 ? 后跟參數(shù)的方式添加成功的。功能是可以實(shí)現(xiàn),但是如果新增的數(shù)據(jù)較大,這個(gè)方法顯示是不可行的,但是還沒(méi)有找到合適的方法,煩請(qǐng)大俠們指點(diǎn)。
php:
query($s); } $mysqli->close(); return $query; } ?>
前端實(shí)現(xiàn)JS部分:
html使用了bootstrap 的 modal作為新增時(shí)的彈出框
用戶新增
var $table = $('#table'), $remove = $('#remove'); $(function() { searchData(); delData(); $('#save').click(function(){ addData(); }); }); function addData(){ var userName = $('#userName').val(); var userAge = $("#userAge").val(); var userSex = $('#user-sex').val() == '0' ? '男' : '女'; var addUrl = "./php/data.php?action=add_row&user_name=" + userName + "&user_age=" + userAge + "&user_sex=" + userSex; $.ajax({ type:"post", url:addUrl, dataType:'json', contentType:'application/json;charset=utf-8', success:function(data){ console.log("success"); }, error:function(data){ console.log("data"); //添加成功后隱蒧modal框 setTimeout(function(){ $('#exampleModal').modal('hide'); },500); //隱藏modal框后重新加載當(dāng)前頁(yè) setTimeout(function(){ searchData(); },700); } }); }
至此,還沒(méi)有解決如下問(wèn)題:
1.表單驗(yàn)證;
2.添加多條數(shù)據(jù)后,php如何接收參數(shù);
3.新增成功后,在$.ajax的方法中,為什么,新增成功后的其它操作要在 error 這個(gè)對(duì)象中實(shí)現(xiàn)?而不是在 sucess 中實(shí)現(xiàn)?
網(wǎng)頁(yè)名稱:php之接口與前端數(shù)據(jù)交互實(shí)現(xiàn)示例代碼
轉(zhuǎn)載注明:http://weahome.cn/article/cgpsoo.html