js 写带有返回值的function遇到的返回值不正常的情况

背景:使用layui上传文件,在上传成功后的回调函数中调用另一个js函数(validateFormIndexExist(filePath)验证上传文件根目录下是否包含index.html文件),validateFormIndexExist(filePath)需要返回布尔值

编码实现:

  1 <!DOCTYPE html>
  2 <html>
  3 <meta charset="utf-8">
  4 <link href="/layui-v2.5.5/layui/css/layui.css" th:href="@{/layui-v2.5.5/layui/css/layui.css}" rel="stylesheet">
  5 <head th:include="include :: header"></head>
  6 <body class="gray-bg">
  7     <button type="button" class="layui-btn" id="uploadFile" ><i class="layui-icon"></i>上传文件</button>
  8     <div class="layui-upload-list">
  9         <p id="demoText"></p>
 10     </div>
 11     <div th:include="include::footer"></div>
 12 <script src="/layui-v2.5.5/layui/layui.js" th:src="@{/layui-v2.5.5/layui/layui.js}"></script>
 13 <script src="/js/appjs/wsbsdt/itemProjectForm/add.js" th:src="@{/js/appjs/wsbsdt/itemProjectForm/add.js(v=1.0.0.01)}"></script>
 14 <script>
 15 var url = ctx+‘/wsbsdt/file/uploadFormFile‘;
 16 layui.use(‘upload‘, function() {
 17     var $ = layui.jquery, upload = layui.upload;
 18     var uploadInst = upload.render({ //允许上传的文件后缀
 19         elem: ‘#uploadFile‘
 20         ,url: url
 21         ,accept: ‘file‘ //普通文件
 22         ,exts: ‘zip‘ //只允许上传zip压缩文件
 23         ,size: 1024*30 //设置文件最大可允许上传的大小,单位 KB。不支持ie8/9
 24         ,done: function(res){
 25             //如果上传失败
 26                if(res.code > 0){
 27                    return layer.msg(‘上传失败‘);
 28                }
 29                //上传成功
 30                if(validateFormIndexExist(res.file.filepath)){//验证上传文件根目录下是否包含index.html文件
 31                    return;
 32                }
 33                //验证存在index.html文件
 34                $(‘#fileId‘).val(res.file.id);
 35                $(‘#versionAddress‘).val(res.file.filepath);
 36                var demoText = $(‘#demoText‘);
 37                demoText.html(‘<span>‘+res.file.filename+‘</span> <a href="/web/manager/wsbsdt/file/downLoadFile?fileNo=‘+res.file.id+‘">下载</a>‘);
 38                fileUploadSuccess = true;
 39                $("#uploadFile").hide();
 40         }
 41         ,error: function(){
 42                var demoText = $(‘#demoText‘);
 43                demoText.html(‘<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>‘);
 44                demoText.find(‘.demo-reload‘).on(‘click‘, function(){
 45                    uploadInst.upload();
 46                });
 47            }
 48     });
 49 });
 50
 51 //写法1:始终返回true,不正常
 52 function validateFormIndexExist(path) {
 53     $.ajax({
 54         cache : true,
 55         type : "POST",
 56         url : ctx+"/wsbsdt/itemProjectForm/validateFormIndexExist",
 57         data : {path:path},// 你的formid
 58         async : false,
 59         error : function(request) {
 60             parent.layer.alert("Connection error");
 61         },
 62         success : function(data) {
 63             if (data.code == 0) {
 64                  console.log(data)
 65                  return false;
 66             } else {
 67                 parent.layer.alert(data.msg)
 68             }
 69         }
 70     });
 71     return true;
 72 }
 73
 74 //写法2:始终返回undefined,不正常
 75 function validateFormIndexExist(path) {
 76     $.ajax({
 77         cache : true,
 78         type : "POST",
 79         url : ctx+"/wsbsdt/itemProjectForm/validateFormIndexExist",
 80         data : {path:path},// 你的formid
 81         async : false,
 82         error : function(request) {
 83             parent.layer.alert("Connection error");
 84         },
 85         success : function(data) {
 86             if (data.code == 0) {
 87                  console.log(data)
 88                  return false;
 89             } else {
 90                 parent.layer.alert(data.msg)
 91                 return true;
 92             }
 93         }
 94     });
 95 }
 96
 97 //写法3:定义一个变量,最后一行返回该变量,正常
 98 function validateFormIndexExist(path) {
 99     var bool = true;
100     $.ajax({
101         cache : true,
102         type : "POST",
103         url : ctx+"/wsbsdt/itemProjectForm/validateFormIndexExist",
104         data : {path:path},// 你的formid
105         async : false,
106         error : function(request) {
107             parent.layer.alert("Connection error");
108         },
109         success : function(data) {
110             if (data.code == 0) {
111                  console.log(data)
112                  bool = false;
113             } else {
114                 parent.layer.alert(data.msg)
115             }
116         }
117     });
118     return bool;
119 }
120 </script>
121 </body>
122 </html>

完!

原文地址:https://www.cnblogs.com/zcx-94/p/11957962.html

时间: 2024-08-02 20:51:48

js 写带有返回值的function遇到的返回值不正常的情况的相关文章

js写一个通讯录

模拟通讯录列表功能 我们手机上面的通讯录列表里面都有根据右侧的字母跳滚动到该字母的第一个名单地方. 于是我把这个功能拆分成两个功能区思考: 第一个是如何把这些名字的的汉字首字母提取出来,并且把相同字母的汉字归类,最后显示成列表. 第二是右侧字母导航,它需要一直固定在右侧,并且我按一个字母,屏幕最中间会弹出一个字母方框,代表我选中了这个字母. 我首先去实现第一个问题,如何提取名字中第一个汉字的首字母? 我去尝试过许多种方法,其中尝试过使用localeCompare(),我也成功的排序了,但是我发现

使用纯js写的一个分页

上图晒效果: 网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了.其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用limit进行分页. 因为这是我自己第一次动手用js写分页,写的应该也不是很完美,有些公共的没有抽取出来,但是用起来还是可以的,这块代码是可以把它当做公共的分页去处理的,我就是用 这块代码写了两个稍微不同一些的分页!公共的代码抽取的也差不多,主要就是ajax后台以及返回的值不同而已,只要把总页码的值获取到

原生JS写的ajax函数

参照JQuery中的ajax功能,用原生JS写了一个ajax,功能相对JQuery要少很多,不过基本功能都有,包括JSONP. 调用的方式分为两种: 1. ajax(url, {}); 2. ajax({}); 调用的方法参照JQuery的ajax,只是 不需要写$.ajax ,只需要写 ajax 就可以了. 代码如下: !function () { var jsonp_idx = 1; return ajax = function (url, options) { if (typeof url

用js 写计算器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"   http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv = "content-type" content="text/html;charset=utf-8"/> &

测试函数用Return 返回值和用函数名返回值的区别

'*************************************************************************'**模 块 名:工程1 - Form1'**说    明:蓝凤凰设计商城 浴火凤凰-郭卫 | 蓝凤凰-魔灵 | 郭卫-icecept'**创 建 人:浴火凤凰-郭卫'**日    期:2015年10月19日  21:53:17'**修 改 人:浴火凤凰-郭卫'**日    期:'**描    述:QQ:493405998 | 微信\旺旺:icece

css,js写的简易的tab导航

简易tab导航 作为前端新手,看着别人写的tab导航代码,自己想模仿却总是忘记.于是这次自己利用css,js写了简易的tab导航,话不多说,上代码,首先是html和css部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>tab选项卡切换</title> <style type="tex

用原生JS写移动动画案例及实际应用

js很强大 相信很多人都知道,那么它有哪些强大之处呢?有兴趣的人可以去查查,这里就不赘述了,因为不在本片文章讨论的范围. 我们要讲的是怎么用原生JS写移动动画?我们先举一个最简单的动画例子,很多网站的左边或右边会有个分享的框,鼠标放上去就还移出一个列表,里面是要分享的地址.鼠标移开,就会移进去. 要实现这个效果要怎么做呢? 可以想一想,鼠标经过和鼠标离开很好理解 用onmousemove事件和onmouseout事件就能完成. 那移动动画呢?我们可以一步一步思考, 首先,一开始是这样的 完成移动

原生js写的一个弧形菜单插件

弧形菜单是一种半弧式或者全弧形菜单,是一种不同于传统横向或者竖向菜单形式的菜单.最近在网上看到好多人写出了这种效果,于是也尝试自己写了一个. 实现方式:原生态js 主要结构: 1.参数合并 1 var defaultPra = { 2 mainMenuId: "ArcMenu",//主菜单id 3 menuBoxId:"menuBox",//菜单包裹id 4 position: "",//弧形菜单 5 customPosition:"0

JS写cookie

(function(){ var name = "whr";//cookie的名字 var value = "whr1";//cookie的值 var aaa = new Date((new Date()).setTime((new Date()).getTime() + (24 * 60 * 60 * 1000))).toUTCString() document.cookie = name+'='+value+';expires='+aaa+';path=/;';