THINKPHP_(5)_THINKPHP6接收ajax下拉菜单提交的数据,存在的bug
反思:
国产总是不尽人意,但是要支持国产。
ThinkPHP的6接收ajax的post数据,存在一个bug。即ajax传递的json数据,在thinkphp后端解析出来后,并非直接的json格式。
描述:
三级联动,此处不赘述如何实现。以省市县为例,当点击省的下拉菜单时,我们设置监听函数:
layui.use(['form','cjgl'], function(){
var config = {
s1: 'xunliandui_id',
s2: 'xunlianying_id',
s3: 'xunlianlian_id',
v1: null,//默认的训练队id
v2: null,//默认的训练营id
v3: null,//默认的训练连id
}; var form = layui.form;
form.on('select(' + config.s1 + ')', function(data){
cityEvent(data);
});
function cityEvent(data) {
// alert('yes');
var $ = layui.jquery;
var $form = $('form');
$form.find('select[name=' + config.s2 + ']').html("");
// alert('no');
var myjson = JSON.stringify({parent_id:data.value});
// $.post("/system/school/xiajidanwei",myjson,function(result){
//
// },'JSON'); $.ajax({
url:"/system/school/xiajidanwei",//查询下级子单位
type:"post",
data:myjson,
dataType:'json',
success:function(result){
if(result.code == 0)
{
alert('xxx');
$.each(result.data, function(index,item){
console.log(item);
});
}else{
layer.msg(result.msg);
}
},
error:function(xhr,status,error) {
layer.msg('数据处理错误',{
icon: 2,
time: 2000 //2秒关闭(如果不配置,默认是3秒)
});
}
});
}
});
上述代码中,使用的是layui的jquery,无论是$.post还是$.ajax,其功能同。
当点击下拉菜单进行选择后,会执行js的cityEvent函数。
我们构造json字符串,即myjson。
但是,thinkphp后端利用$_POST接收的内容为:
因此,我们的后端需要特殊处理:
public function ajaxData2()
{
// 获取参数
$a=array();
$a[0]=1000;
$src = $this->request
->only([
'parent_id' => ''
],'POST');
// 实例化
// $parent_id=$_POST["parent_id"];
foreach($_POST as $key=>$value){
$key=json_decode($key);
$parent_id=$key->{"parent_id"};
if($parent_id){
break;
}
} $sch = new sch;
$data = $sch->where('status',1)->where('parent_id',$parent_id)->select();
$data = reSetObject($data, $src); return json($data);
}
利用foreach取出$_POST的索引值,然后转化为json,再取出parent_id中的数据。
结论:
jquery.ajax以json传递的数据,在thinkphp6的后端,变成了数组的索引。而非json数据。
国产的库和框架,需要加油啊。
THINKPHP_(5)_THINKPHP6接收ajax下拉菜单提交的数据,存在的bug的更多相关文章
- IOS 下拉菜单
由于之前曾经用到过下拉菜单,所以现在花一些时间回过头来细细整理了一下,逐步完善这个下拉菜单,并提供一些比较基本的功能,以便日后如果有需要的话可以进行复用,并提供给需要的人参考.下拉菜单同样分为数据源和 ...
- java poi excel操作 下拉菜单 及数据有效性
1 private InputStream updateTemplateStyleHSSF(InputStream inputStream,CsCustCon csCustCon) throws IO ...
- js 联动下拉菜单
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- php+ajax的三级联动下拉菜单
封装一个三级联动,就可以在任何页面进行引用了 先写个页面引用一下这个js <head> <meta http-equiv="Content-Type" conte ...
- ajax三级联动下拉菜单
ajax写三级联动,先写一个文件类吧,以后用的时候直接调用即可: 来找一张表: 实现: 中国地域的三级联动:省.市.区: 图: 说一下思路: (1)当用户选择省份的时候触发事件,把当前的省份的id通过 ...
- 在AJAX里 使用【 XML 】 返回数据类型 实现简单的下拉菜单数据
在AJAX里 使用XML返回数据类型 实现简单的下拉菜单数据 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- 在AJAX里 使用【 JSON 】 返回数据类型 实现简单的下拉菜单数据
在AJAX里 使用JSON返回数据类型 实现简单的下拉菜单数据 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
- 2016/4/5 Ajax ①用户名 密码 登陆 注册 ② 判断用户名是否已存在 ③点击按钮出现民族选项下拉菜单 ④DBDA类 加入Ajaxquery方法 数组变字符串 字符串拆分
①登陆 注册 查表匹配 0405Ajax.php ②判断用户名是否存在 <!DOCTYPE html> <html lang="en"> ...
- 【easyui-combobox】下拉菜单自动补全功能,Ajax获取远程数据源
这个是针对easyUI的下拉菜单使用的,Ajax获取远程数据源 HTML 页面 <input id="uname" name="uname" class= ...
随机推荐
- 1025 PAT Ranking
Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhe ...
- 【日志】MySQL中有多少种日志
redo 重做日志 作用:确保事务的持久性,防止在发生故障,脏页未写入磁盘.重启数据库会进行redo log执行重做,到达事务一致性 undo 回滚日志 作用:保证数据的原子性,记录事务发生之前的数据 ...
- POJ1376简单广搜
题意: 给你一个n*m的矩阵,然后给你机器人的起点和终点,还有起点的方向,然后每次机器人有两种操作,左右旋转90度,或者是朝着原来的方向走1,2或者3步,机器人再走的过程中不能碰到格子,也 ...
- Win64 驱动内核编程-4.内核里操作字符串
内核里操作字符串 字符串本质上就是一段内存,之所以和内存使用分开讲,是因为内核里的字符串太有花 样了,细数下来竟然有 4 种字符串!这四种字符串,分别是:CHAR*.WCHAR*.ANSI_STRIN ...
- SSRF_FastCGI
SSRF_FastCGI 目录 SSRF_FastCGI FastCGI协议 SSRF ssrf + fastcgi 参考 FastCGI协议 简介 Fast CGI源自旧版本的CGI 路由/结构图 ...
- 【flutter学习】基础知识(一)
今天开始学习一下flutter 学习思路:首先由一个简单的例子引出每次学习的对象,一点一点加入元素,针对于代码去了解学习详细知识. 看完本篇博客能够快速的读懂flutter简单代码. flutter ...
- (一)安装mysql
数据库 数据库的相关概念 DB:数据库(database):存储数据的"仓库".它保存了一系列有组织的数据. DBMS:数据库管理系统(Database Management Sy ...
- getInstance()得理解
使用getInstance()方法的原因及作用 https://www.cnblogs.com/roadone/p/7977544.html 使用getInstance()方法的原因及作用 https ...
- Spring循环依赖问题的解决
循环依赖问题 一个bean的创建分为如下步骤: 当创建一个简单对象的时候,过程如下: 先从单例池中获取bean,发现无 a 创建 a 的实例 为 a 赋值 把 a 放到单例池中 当创建一个对象并且其中 ...
- 80行代码教你写一个Webpack插件并发布到npm
1. 前言 最近在学习 Webpack 相关的原理,以前只知道 Webpack 的配置方法,但并不知道其内部流程,经过一轮的学习,感觉获益良多,为了巩固学习的内容,我决定尝试自己动手写一个插件. 这个 ...