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= ...
随机推荐
- 【feign】拦截输出日志
方法一: 使用Feign拦截器 /** * @author: Sam.yang * @date: 2020/11/12 16:55 * @desc: feign请求拦截 */ @Slf4j @Comp ...
- HTML5中meta属性的使用详解
meta属性在HTML中占据了很重要的位置.如:针对搜索引擎的SEO,文档的字符编码,设置刷新缓存等.虽然一些网页可能没有使用meta,但是作为正规军,我们还是有必要了解一些meta的属性,并且能够熟 ...
- Word/Excel文档伪装病毒-kspoold.exe分析
一. 病毒样本基本信息 样本名称:kspoold.exe 样本大小: 285184 字节 样本MD5:CF36D2C3023138FE694FFE4666B4B1B2 病毒名称:Win32/Troja ...
- UVA11021麻球繁衍
题意: 有K只麻球,每只生存一天就会死亡,每只麻球在死之前有可能生下一些麻球,生i个麻球的概率是pi,问m天后所有的麻球都死亡的概率是多少? 思路: 涉及到全概率公式,因为麻球的 ...
- Swift系列二 - 循环控制
一.if-else if后面的条件可以省略小括号 条件后面的大括号不可以省略 let age = 10 if age >= 18 { print("大学") } else i ...
- IDEA只有Commit没有Push按钮
问题描述 idea的右上角只有commit按钮,而没有push按钮 问题解决 打开File->Settings->Menus and Toolbars->Navigation Bar ...
- JDK库rt包中常用包说明
日常开发中的api都在rt包中,具体路径为:/jdk1.8.0_162/jre/lib中,注意是在jre中. 每个包中大致包含以下几个部分: 接口 类 枚举 异常 错误 注解 J2EE开发中常用的包 ...
- C++ primer plus读书笔记——第2章 开始学习C++
第2章 开始学习C++ 1. endl确保程序继续运行前刷新输出(将其立即显示在屏幕上),而使用"\n"不提供这样的保证,这意味着在有些系统中,有时可能在您输入信息后才会出现提示. ...
- 技能Get·BOM头是什么?
阅文时长 | 0.26分钟 字数统计 | 472.8字符 主要内容 | 1.引言&背景 2.BOM头是什么? 3.如何创建或取消BOM头? 4.如何判断文件是否包含BOM头? 5.声明与参考资 ...
- [BD] Hive
简介 基于HDFS的数据仓库工具 基于HDFS上的数据分析引擎 2.x 前:SQL -----> Hive ----> MapReduce 2.x 后:推荐执行引擎为 Spark 支持S ...