最近在做前后端数据交互的尝试,也跳了很多坑,使用的是php+bootstrap-table+js,把一些收获记录在这里,方便查询。

这个小项目,仅有3个文件,分别为:

1.crud.html

2.data.php

3.crud.sql

数据交互实现1:查询

1.mysql 数据库建表

2.php查询接口

3.前端数据展现

mysql 数据库建表数据库名称:crud

第一个表名:t_users

主键:user_id,自增长排列

php:

<?php //测试php是否可以拿到数据库中的数据 /*echo '44444';*/ //做个路由 action为url中的参数 $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(){ //测试 运行crud.html时是否可以获取到 下面这个字符串 /*echo '46545465465456465';*/ //查询表 $sql = 'SELECT * FROM `t_users`'; $query = query_sql($sql); while($row = $query->fetch_assoc()){ $data[] = $row; } $json = json_encode(array( 'resultCode'=>200, 'message'=>'查询成功!', 'data'=>$data ),JSON_UNESCAPED_UNICODE); //转换成字符串JSON echo($json); } /**查询服务器中的数据 * 1、连接数据库,参数分别为 服务器地址 / 用户名 / 密码 / 数据库名称 * 2、返回一个包含参数列表的数组 * 3、遍历$sqls这个数组,并把返回的值赋值给 $s * 4、执行一条mysql的查询语句 * 5、关闭数据库 * 6、返回执行后的数据 */ 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; }?>

前端实现:

增删改查

删除 新建

实现效果:

数据交互实现2:删除

在做删除时遇到不少的坑,究其原因是因为对SQL语句不熟悉,对php不熟悉,不过,总结了以下几点,供参考:

1.delete 返回的参数只能用 $_GET 获取;

2.delete 返回的参数要放在URL中,不能放在body中;body中的参数是用来查询的;

3.SQL语句一定要熟练,一步错,步步错;

4.要在数据库中执行SQL语句检查语句是否执行正确,要使用 Rest Client 测试URL请求是否正确;

php:

前端实现JS部分:

var $table = $('#table'), $remove = $('#remove'); $(function() { delData(); });function delData() { $remove.on('click', function() { if(confirm('是否继续删除')) { var rows = $.map($table.bootstrapTable('getSelections'), function(row) { //返回选中的行的索引号 return row.user_id; }); } $.map($table.bootstrapTable('getSelections'),function(row){ var del_url = './php/data.php'; //根据userId删除数据,因为这个id就是 传给服务器的参数 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('删除失败!'); } }); }); }) }

调试方法:

数据交互实现3:新增

在写php的方法上,我觉得我的方法是有问题的,因为所有的参数,也就是所有的需要新增的数据都是通过 接口以 ? 后跟参数的方式添加成功的。功能是可以实现,但是如果新增的数据较大,这个方法显示是不可行的,但是还没有找到合适的方法,烦请大侠们指点。

php:

<?php //测试php是否可以拿到数据库中的数据 /*echo '44444';*/ //做个路由 action为url中的参数 $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 add_row(){ /*获取从客户端传过来的数据*/ $userName = $_GET['user_name']; $userAge = $_GET['user_age']; $userSex = $_GET['user_sex']; //INSERT INTO 表名 (列名1,列名2,...)VALUES ('对应的数据1','对应的数据2',...) // VALUES 的值全为字符串,因为表属性设置为字符串 $sql = 'INSERT INTO t_users (user_name,user_age,user_sex) VALUES ('$userName','$userAge','$userSex')'; if(query_sql($sql)){ echo 'ok!'; }else{ echo '新增成功!'; } } 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; }?>

前端实现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框后重新加载当前页 setTimeout(function(){ searchData(); },700); } }); }

至此,还没有解决如下问题:

1.表单验证;

2.添加多条数据后,php如何接收参数;

3.新增成功后,在$.ajax的方法中,为什么,新增成功后的其它操作要在 error 这个对象中实现?而不是在 sucess 中实现?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

php接口前端,php 接口与前端数据交互实现示例代码相关推荐

  1. java 静态数据_Java 静态数据初始化的示例代码

    无论创建多少个对象,静态数据都只占用一份存储区域.static关键字不能应用于局部变量,因此它只能作用于域.如果一个域是静态的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初始值:如 ...

  2. ajax数据交互代码,Django中使用jquery的ajax进行数据交互的实例代码

    jquery框架中提供了$.ajax.$.get.$.post方法,用于进行异步交互,由于Django中默认使用CSRF约束,推荐使用$.get 示例:实现省市区的选择 最终实现效果如图: 将jque ...

  3. java 静态初始化数据_Java 静态数据初始化的示例代码

    无论创建多少个对象,静态数据都只占用一份存储区域.static关键字不能应用于局部变量,因此它只能作用于域.如果一个域是静态的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初始值:如 ...

  4. ESP32通过蓝牙接收回发数据(有示例代码和步骤)

    目录 1.APP需求 2.蓝牙需要做到的要求 2.1 实际操作过程 2.2 对于蓝牙建立连接,关闭连接.接受数据.发送数据的简单介绍 2.3 示例代码 2.4 蓝牙基础初始化及其他 2.5 蓝牙在串口 ...

  5. 前端和后端怎么进行数据交互的_前端VS后端

    前言 对于广义上的前端来说,上游是接口, 下游是界面. 对于后端来说,上游是数据库, 下游是接口. 前端的工作的核心是交互,消费接口的数据,给到用户.我们分别来看这几个方面:前端能够抵达的最上游是接口 ...

  6. 前端和后端的JSON数据交互

    因为之前一直在学后端方面的内容,对于前端这块的知识一直半懂半不懂.昨天学了ajax,一些知识点记录下. 前端知识 最重要的两种请求方式:GET.POST. GET : 有请求参数,无请求体 POST ...

  7. 前端vue和django后端数据交互,跨域问题的解决

    一:前言 再前后端的数据交互问题上,经常会遇到跨域问题.即这个错误 Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/test/' from ...

  8. flask与js交互的示例代码_QT5.12 C++与前端JavaScript/HTML实现通信交互

    "WebSocket connection to 'ws://localhost:12345/' failed: Error in connection establishment: net ...

  9. echarts js 删除框选数据_echarts同一页面中四个图表切换的js数据交互方法示例

    需求: 点击tab页,切换四个不同的图表,ajax向后台请求数据,展示在四个不同的图表中. 其余的就不多说,直接上js代码了 示例代码: $(function() { $("#heart&q ...

  10. 微信小程序之前端与java后台进行数据交互

    后台是用SpringBoot+SSM来写的,整体上来说,和普通的Web没什么区别 要注意的是,对于小程序访问的控制层方法,需要返回一个Map类型 @RequestMapping(value = &qu ...

最新文章

  1. 2020年10个诱人的技术里程碑
  2. 传统云主机存在哪些问题和弊端?
  3. 东枝戛古舍利佛塔群(缅三十五)
  4. 深度学习中Batch、Iteration、Epoch的概念与区别
  5. android颜色值的表示方法android:background=#FFFFFFFF的意思
  6. 单片机脉宽测量C语言,单片机脉宽测量的程序
  7. JAVA实验二——圆柱体
  8. Android应用发布渠道汇总(更新中)
  9. 大数据学习笔记20:MR案例——按电影热度值排序
  10. 2008年下半年软考在即 51CTO将实时提供试题和参考答案
  11. K.image_data_format() == ‘channels_first‘
  12. EXCHANGE服务器一些常用的邮件限制方法笔记
  13. vi显示行数命令和跳转到指定行
  14. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第1节 基础加强_1_今日内容(1)...
  15. Android 四大组件学习之ContentProvider一
  16. Windows 10配置远程开机
  17. 初中物理60个重要知识点
  18. 【优化】seo之提升网站流量的四种方法
  19. 宝莱坞机器人 西瓜_《宝莱坞机器人之恋》电影完整版免费在线观看_2010西瓜影音 - 辛集电影院...
  20. 论文阅读:Cyber-security research

热门文章

  1. 【Elasticsearch】Mapping APIs
  2. HDU 5046 Airport ( Dancing Links 反复覆盖 )
  3. Zookeeper配置项说明
  4. android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)
  5. AccessHelper
  6. Oracle DUL/AUL/ODU 工具说明
  7. 笑死人不偿命,你敢进来看看吗
  8. php画图抗锯齿,​CSS3如何实现字体抗锯齿渲染效果?-webkit-font-smoothing属性(实例)...
  9. Storm BaseBasicBolt和BaseRichBolt
  10. Oracle RAC tns 00505,Alert Log Errors: 12170 TNS-12535/TNS-00505: Operation Timed Out