反思:

国产总是不尽人意,但是要支持国产。

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的更多相关文章

  1. IOS 下拉菜单

    由于之前曾经用到过下拉菜单,所以现在花一些时间回过头来细细整理了一下,逐步完善这个下拉菜单,并提供一些比较基本的功能,以便日后如果有需要的话可以进行复用,并提供给需要的人参考.下拉菜单同样分为数据源和 ...

  2. java poi excel操作 下拉菜单 及数据有效性

    1 private InputStream updateTemplateStyleHSSF(InputStream inputStream,CsCustCon csCustCon) throws IO ...

  3. js 联动下拉菜单

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. php+ajax的三级联动下拉菜单

    封装一个三级联动,就可以在任何页面进行引用了 先写个页面引用一下这个js <head> <meta http-equiv="Content-Type" conte ...

  5. ajax三级联动下拉菜单

    ajax写三级联动,先写一个文件类吧,以后用的时候直接调用即可: 来找一张表: 实现: 中国地域的三级联动:省.市.区: 图: 说一下思路: (1)当用户选择省份的时候触发事件,把当前的省份的id通过 ...

  6. 在AJAX里 使用【 XML 】 返回数据类型 实现简单的下拉菜单数据

    在AJAX里 使用XML返回数据类型 实现简单的下拉菜单数据 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...

  7. 在AJAX里 使用【 JSON 】 返回数据类型 实现简单的下拉菜单数据

    在AJAX里 使用JSON返回数据类型 实现简单的下拉菜单数据 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  8. 2016/4/5 Ajax ①用户名 密码 登陆 注册 ② 判断用户名是否已存在 ③点击按钮出现民族选项下拉菜单 ④DBDA类 加入Ajaxquery方法 数组变字符串 字符串拆分

    ①登陆   注册    查表匹配    0405Ajax.php   ②判断用户名是否存在 <!DOCTYPE html> <html lang="en"> ...

  9. 【easyui-combobox】下拉菜单自动补全功能,Ajax获取远程数据源

    这个是针对easyUI的下拉菜单使用的,Ajax获取远程数据源 HTML 页面 <input id="uname" name="uname" class= ...

随机推荐

  1. 1113 Integer Set Partition

    Given a set of N (>) positive integers, you are supposed to partition them into two disjoint sets ...

  2. hdu 2841 Visible Trees(容斥)

    原文链接 There are many trees forming a m * n grid, the grid starts from (1,1). Farmer Sherlock is stand ...

  3. 033- while循环语句

    语法 初始化语句; while(boolean表达式) { 循环体语句; 控制条件语句; } 执行过程: 只要boolean表达式里面的结果是true,就会执行while大括号里面的语句,直到bool ...

  4. Linux下性能监控、守护进程与计划任务管理

    目录 一:监视系统进程(ps .top) 二:查看网络连接信息 (netstat) 三:文件进程.端口关联(lsof) 四:计划任务管理(at .crontab) at crontab 一:监视系统进 ...

  5. Linux日志分析和管理

    目录 日志的作用.分类.管理.轮转和级别 rsyslog服务 Journal守护进程 /var/log下相关的日志文件 日志服务器的建立 日志的作用.分类.管理.轮转和级别 日志的作用: 用于记录系统 ...

  6. cmake VTK visual studio 2010

    使用cmake在configure之后,出现了以下错误,导致编译无法进行 The C compiler "cl" is not able to compile a simple t ...

  7. <JVM下篇:性能监控与调优篇>01-概述篇-02-JVM监控及诊断工具-命令行篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  8. 2020年电子设计大赛F题

    挺简单前一百分得了九十多 当然主要是队友很给力 1 温度判别 MLX90614DCC,然后测温拟合吧...从五十度到三十度平均一次要测一个半小时...这是真的痛苦...然后虽然文件里面说自带测温工具, ...

  9. Error starting userland proxy: /forwards/expose/port returned unexpected status: 500.

    欢迎关注微信公众号 Error starting userland proxy: /forwards/expose/port returned unexpected status: 500. dock ...

  10. PHP 判断当前日期是否是法定节假日或者休息日

    1.代码如下 $date = date("Ymd",time()); $url = "http://api.goseek.cn/Tools/holiday?date=&q ...