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

Posted 壹玖玖肆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

 完!

以上是关于js 写带有返回值的function遇到的返回值不正常的情况的主要内容,如果未能解决你的问题,请参考以下文章

js:一个函数怎么获得另一个函数的返回值呢?

js里的返回值怎么获取到

js function 返回 ajax 的返回值的问题

fastjson 可以设置值不加引号吗

js 如何创建带返回值的函数

CXF生成客户端代码和sopaui调用返回值不一致