這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何實現(xiàn)php之接口與前端數(shù)據(jù)交互,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比西工網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式西工網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋西工地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
最近在做前后端數(shù)據(jù)交互的嘗試,也跳了很多坑,使用的是php+bootstrap-table+js,把一些收獲記錄在這里,方便查詢。
這個小項目,僅有3個文件,分別為:
1.crud.html
2.data.php
3.crud.sql
數(shù)據(jù)交互實現(xiàn)1:查詢
1.MySQL 數(shù)據(jù)庫建表
2.php查詢接口
3.前端數(shù)據(jù)展現(xiàn)
mysql 數(shù)據(jù)庫建表
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ù)庫,參數(shù)分別為 服務(wù)器地址 / 用戶名 / 密碼 / 數(shù)據(jù)庫名稱 * 2、返回一個包含參數(shù)列表的數(shù)組 * 3、遍歷$sqls這個數(shù)組,并把返回的值賦值給 $s * 4、執(zhí)行一條mysql的查詢語句 * 5、關(guān)閉數(shù)據(jù)庫 * 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; } ?>
前端實現(xiàn):
增刪改查
實現(xiàn)效果:
數(shù)據(jù)交互實現(xiàn)2:刪除
在做刪除時遇到不少的坑,究其原因是因為對SQL語句不熟悉,對php不熟悉,不過,總結(jié)了以下幾點,供參考:
1.delete 返回的參數(shù)只能用 $_GET 獲取;
2.delete 返回的參數(shù)要放在URL中,不能放在body中;body中的參數(shù)是用來查詢的;
3.SQL語句一定要熟練,一步錯,步步錯;
4.要在數(shù)據(jù)庫中執(zhí)行SQL語句檢查語句是否執(zhí)行正確,要使用 Rest Client 測試URL請求是否正確;
php:
前端實現(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) { //返回選中的行的索引號 return row.user_id; }); } $.map($table.bootstrapTable('getSelections'),function(row){ var del_url = "./php/data.php"; //根據(jù)userId刪除數(shù)據(jù),因為這個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ù)交互實現(xiàn)3:新增
在寫php的方法上,我覺得我的方法是有問題的,因為所有的參數(shù),也就是所有的需要新增的數(shù)據(jù)都是通過 接口以 ? 后跟參數(shù)的方式添加成功的。功能是可以實現(xiàn),但是如果新增的數(shù)據(jù)較大,這個方法顯示是不可行的,但是還沒有找到合適的方法,煩請大俠們指點。
php:
query($s); } $mysqli->close(); return $query; } ?>
前端實現(xiàn)JS部分:
html使用了bootstrap 的 modal作為新增時的彈出框
用戶新增
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)前頁 setTimeout(function(){ searchData(); },700); } }); }
至此,還沒有解決如下問題:
1.表單驗證;
2.添加多條數(shù)據(jù)后,php如何接收參數(shù);
3.新增成功后,在$.ajax的方法中,為什么,新增成功后的其它操作要在 error 這個對象中實現(xiàn)?而不是在 sucess 中實現(xiàn)?
上述就是小編為大家分享的如何實現(xiàn)php之接口與前端數(shù)據(jù)交互了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。