一、问题

在用thinkphp5做到用layer弹出层上传文件过程中,一直不能成功。详细代码如下:
HTML代码:

<div id="importBox" v-show="!showListBtn" style="display:none"><form id="importForm" method="post" enctype="multipart/form-data"  style="padding-left:20px;text-align:center;"><br/><input id="importFile" name="importFile" type="file" style="width:330px"  value=""  accept=".xls,.xlsx"/><p>仅允许导入"xls"或"xlsx"格式文件!<br/>  </form>
</div>

JS代码:

//获取模板当中的url地址url = $(obj).attr('daoru_url');var $importFile = $('<div id="wrapper"><div class="content"></div></div>'),$content = $importFile.children(".content")$importFile.appendTo('body')layer.open({type: 1,area: ['500px', '300px'],shadeClose: false,shade:0.6,// anim : 3,skin: 'layui-layer-molv',title:"导入数据",//content: $("#importBox").html(),content:jQuery("#importBox"),btn: ['下载模板','确定', '关闭'],btn1: function(index){window.location.href = baseURL+"org/orgmainfo/template?token="+localStorage.getItem("token");layer.close(index);},btn2: function(index,layero){var form=document.getElementById('importFile').value;formData = new FormData();formData.append('file', $("#importFile")[0].files[0]);$.ajax({url: url,dataType: 'json',type: 'POST',data: formData,cache: false,processData: false,  // 不处理数据contentType: false,success: function(r){console.log(r);if(r.code == 0){alert("导入成功!");vm.reload();}else{alert(r.msg);}}});//layer.close(index);},btn3: function(index){layer.close(index);}});

控制器代码略

测试中,发现弹出层能够弹出,显示正常,但不能获得上传文件。

弹出层正常

测试FormData中不能获得文件名称

alert测试为空

二、问题解决

百度了很多文章,不能解决。最后看到两篇文章在layer.open中设置content值时方法不一样,于是把content: $("#importBox").html()换成content:jQuery("#importBox"),运行居然成功!

调用alert调试截图如下:

三、分析

这两者有何不同?
到layui官网查看,它也是采用的第一种方法,见下图(layui官网示例代码截图,https://layer.layui.com/?alone)。

于是到w3school网站查了关于jQuery的一些知识。在w3school中对这两种方法都是认可的,效果也是一样的,看实例用第一种方法更多一些。

但利用jQuery获得内容时可获得三种内容,分别是 text()、html() 以及 val()
三个简单实用的用于 DOM 操作的 jQuery 方法:

text() - 设置或返回所选元素的文本内容
html() - 设置或返回所选元素的内容(包括 HTML 标记)
val() - 设置或返回表单字段的值
下面的例子演示如何通过 jQuery text() 和 html() 方法来获得内容:

实例

$("#btn1").click(function(){alert("Text: " + $("#test").text());
});
$("#btn2").click(function(){alert("HTML: " + $("#test").html());
});

现在第一种方法content: $("#importBox").html()很明显就是获得html内容,而formData则是和json一样的一种数据对象。这样显示当然没有问题,但生成formData对象显然不行,那么把.html()去掉,则变成 jQuery 类选择器的用法,是否能够可行呢?
于是把content内容从$("#importBox").html(),变成$("#importBox"),再次测试,居然成功!看来, 问题就在.html()上,不在于是用 jQuery 类选择器还是用 jQuery 方法。
这样的坑,希望其他朋友们以后避免!

jQuery引起的用layer弹出层上传文件不能获取文件名的解决(thinkphp5)相关推荐

  1. html5相对父元素定位,layer弹出层设置相对父级元素定位

    layer弹出层默认是相对body固定定位的,可是项目中一般需要相对某个盒子相对定位,下面是个加载弹层例子: var loadIndex = layer.open({ type: 3, //3 表示加 ...

  2. layer弹出层扩展自定义样式

    layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验. 官网 http://layer.layui.com/ l ...

  3. layer弹出层闪退_jQuery使用Layer弹出层插件闪退问题

    一.前言 巨坑,基础没学好,导致找了一个下午的问题,终于被我发现了.说多都是泪,记录下来,以后有人遇到这个错误可以参考下 做项目期间做了几个页面,需要用到弹出层,为了方便使用到了Layer的插件,然后 ...

  4. JavaScript学习笔记(九)(验证框架,layer弹出层)

    JavaScript学习笔记(九) 一.jQuery Validate验证框架 1.引入相关插件路径 2. 修改一些规则 3. 自定义验证规则 4.异步验证 整体代码 二.layer弹出层 1.引入相 ...

  5. layui弹出层html,layer弹出层

    layer 弹出层,怎么只让他弹出一次.在线等 我昨天用这个插件的时候也有这个问题,弹出内容大了就居不了中.这是组件不完美的地方,他设置了top和left值,而且是固定的.这种弹出层都是绝对定位的 所 ...

  6. layer弹出层组件实现加载效果

    layer弹出层组件挺实用的,需要跟jQuery配合使用,下面介绍一下利用layer制作加载层. 使用layer.load() layer.load(1,{ // 0/1/2表示图标,load有三种可 ...

  7. Vue(二十一)Layer弹出层

    安装:下载源码到本地 layer: 丰富多样的 Web 弹出层组件,可轻松实现 Alert/Confirm/Prompt/普通提示/页面区块/iframe/tips 等等几乎所有的弹出交互.目前已成为 ...

  8. Layer 弹出层组件

    Layer 弹出层组件 一.Layer是什么? 用于实现网页中的各种弹出层交互, 如 Alert/Confirm/Message/Tips/Page/Iframe/Loading/Prompt/Tab ...

  9. layer弹出层闪退_layer弹出层详解

    1.layer 弹出层iframe页面关闭自身 function closeFrame() { var index = parent.layer.getFrameIndex(window.name); ...

最新文章

  1. SQL SERVER特殊行转列案列一则
  2. Scrapy框架的使用之Scrapy对接Selenium
  3. Java解析JSON时,new JSONObject(这儿写json字符串)报错问题
  4. 运行iis提示服务没有及时响应启动或控制请求的解决方法
  5. 未命名语句块中的声明
  6. 10月Web服务器调查:Apache下降 Ngnix攀升
  7. 张勇云栖大会谈科技担当与责任:做开放共享人人受益的好科技
  8. Windows 下的批处理脚本基础——批处理运算操作(代码可拿)
  9. SIMIS计算机联锁系统,steam游戏sim
  10. 华为内部发文宣布部分部门停止社招,外包可成为新常态
  11. Mysql之无法查询中文字解决办法
  12. java大马后门_一款免杀php大马的解密与去后门
  13. 曲奇云盘资源搜索引擎_曲奇云盘下载-曲奇云盘资源共享群组下载_快啦网
  14. 功率和能量换算公式、如何换算,W和J如何转换,power和energy转换
  15. c语言 实现推箱子小游戏
  16. 一篇文章说尽,中国互联网的30年(完结篇)
  17. Ceres-Solver使用指南
  18. 简述计算机动画制作流程,Mg动画制作流程——六大步骤
  19. 什么是 Proxy ?
  20. [19保研]北京邮电大学计算机学院6月9日校园开放日活动安排

热门文章

  1. 计算机网络中心防火门开启方向,防火门的开启方向怎么确定?
  2. 黄河科技学院计算机等级考试成绩查询,全国计算机等级考试成绩查询汇总
  3. [pillow]透明图片和不透明图片叠加合成--添加透明度
  4. 【转】自己开发的iphone app打包为IPA包的方法
  5. Java8用jmap输出jvm参数
  6. 绝了,hutool导出excel 图片居然没有调用方法
  7. 华为5G CPE是做什么用的?
  8. Pinocchio——将.arith文件转换为qap及做相应的prove/verify操作
  9. Arai2自动添加tracker链接的方法
  10. PHP怎样大幅度降低图片大小但最大程度保持图片清晰?