首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在ajax beforeSend之前先解析函数

在ajax beforeSend之前先解析函数
EN

Stack Overflow用户
提问于 2018-03-15 21:41:38
回答 2查看 592关注 0票数 0

在使用'fileuploader‘上传文件之前,我首先尝试检查该文件,现在使用我的beforeSend函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
beforeSend: function(item, listEl, parentEl, newInputEl, inputEl) {
            var file = item.file;

            let readfile = function(file){
                return new Promise(function(resolve, reject){
                console.log(file);
                    var reader = new FileReader();
                    var duration = 0;
                    reader.onload = function() {
                        var aud = new Audio(reader.result);
                        aud.onloadedmetadata = function(){
                            resolve(aud.duration);
                        }; 
                    };
                reader.readAsDataURL(file); 
                });
            }

          return readfile(file).then(function(res){ 
                if(res>60){ 
                    console.log('more than 60');
                    return false; 
                 }
                 else{
                    console.log('uploaded');
                    return true;
                 }

        }); 

        },

我的readfile函数实际上等待承诺完成,但是在完成readfile函数之前,beforeSend函数不会暂停。

请问我该怎么做?

我知道它不会返回false,因为http请求仍然在发出,即使我对我的承诺返回了false。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-15 21:56:41

按照jQuery代码,beforeSend()不使用回调函数返回的值,而是检查false是否返回。

https://github.com/jquery/jquery/blob/d7237896c79a5a10d85fcdec199c5657a469a92b/src/ajax.js#L652 //允许自定义标头/mimetype和早期中止if ( s.beforeSend &( s.beforeSend.call( callbackContext,jqXHR,s) === false custom )){ // abort (如果尚未完成,则返回jqXHR.abort();}

因此,不仅返回没有使用的false以外的任何值,而且当您的承诺解决时,beforeSend回调将已经完成,而ajax请求已经启动/完成。

如果您想事先执行一些异步操作,则需要在实际的jQuery.ajax()调用之前执行该操作。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new Promise((resolve,reject)=>{
   //...
}).then(()=>{
   return $.ajax({
     //....
   });
});
票数 1
EN

Stack Overflow用户

发布于 2018-03-15 21:51:41

你可以做到这一点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).on('sendAjax',function(){
//Write your ajax code here
});

$(document).trigger("sendAjax");

创建自定义事件sendAjax,将其与文档绑定,并在文件成功上传后触发事件。在$(document).ready()中使用文件上传功能

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).ready(function(){
 function myfunction(){
  var file = item.file;

            let readfile = function(file){
                return new Promise(function(resolve, reject){
                console.log(file);
                    var reader = new FileReader();
                    var duration = 0;
                    reader.onload = function() {
                        var aud = new Audio(reader.result);
                        aud.onloadedmetadata = function(){
                            resolve(aud.duration);
                        }; 
                    };
                reader.readAsDataURL(file); 
                });
            }

          return readfile(file).then(function(res){ 
                if(res>60){ 
                    console.log('more than 60');
                    return false; 
                 }
                 else{
                    console.log('uploaded');
                    $(document).trigger("sendAjax"); 
                    return true;
                 }

        }); 
 }
});

通过这种方式,ajax只能在成功上传的文件之后发送。

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49313877

复制
相关文章
如何使用DNS和SQLi从数据库中获取数据样本
泄露数据的方法有许多,但你是否知道可以使用DNS和SQLi从数据库中获取数据样本?本文我将为大家介绍一些利用SQL盲注从DB服务器枚举和泄露数据的技术。
FB客服
2019/03/08
11.5K0
如何使用DNS和SQLi从数据库中获取数据样本
Jquery 使用getJSON 获取json数据
1.先引用jq获取下载到本地 CDN地址:https://code.jquery.com/jquery-latest.js
Alone88
2019/10/22
3.5K0
【笔记php】如何使用PHP从JSON提取数据?
2022年8月26日16点36分 如何使用PHP从JSON提取数据? 不多bb,直接上示例 一 $Json = ' { "type": "fish9.cn", "name": "fish9.cn" }'; $fish = Json_decode($Json,true); echo $fish["type"]; //结果fish9.cn 二 $Json = '{ "type":"fish9.cn", "name":"fish9.cn", "daily":[{
吃猫的鱼Code
2023/02/02
4.9K0
19.JAVA-从文件中解析json、并写入Json文件(详解)
json与xml相比, 对数据的描述性比XML较差,但是数据体积小,传递速度更快.
诺谦
2019/12/19
12.1K0
如何从列表中获取元素
观察URAM的物理管脚,不难发现A/B端口都有相应的地址、使能、读写控制信号。与BRAM不同的是URAM的读写使能信号是同一个管脚RDB_WR_A/B,其为0时执行读操作,为1时执行写操作,这意味着一旦A/B端口独立,同一端口的读写操作就无法同时发生,因此,如果采用上一篇文章中介绍的方法将其配置为两个独立的单端口RAM,其读写行为与常规的单端口RAM是不同的,进一步而言,此时的读写行为类似于NO_Change模式。
Lauren的FPGA
2019/10/30
17.3K0
根据bed文件从fasta文件中获取基因
第一次写博客,分享一个做的提取基因序列的程序,根据bed文件里的位置信息从基因组里提取序列
py3study
2020/02/10
2.7K0
如何从机器学习数据中获取更多收益
对于深度学习而言,合适的数据集以及合适的模型结构显得至关重要。选择错误的数据集或者错误的模型结构可能导致得到一个性能不佳的网络模型,甚至可能得到的是一个不收敛的网络模型。这个问题无法通过分析数据得到很好的解决,只能是通过一次次的制作数据集、搭建模型并进行仿真实验才能发现如何最好地利用数据集以及选取什么样的模型结构。  本文讲解一些有关于数据集的实用知识,通过本文你将了解以下三点:
用户3578099
2019/08/16
8.3K0
python-获取URL中的json数据
数据源为某系统提供的URL,打开是json文件,python代码获取如下: URL替换成自己的即可。 import urllib.request def get_record(url): resp = urllib.request.urlopen(url) ele_json = json.loads(resp.read()) return ele_json if __name__ == '__main__': print(get_record('http://abc.co/
py3study
2020/01/16
5.5K0
PowerBI从Onedrive文件夹中获取多个文件,依然不使用网关
整个过程的PQ底层逻辑很清楚,使用一个示例文件作为函数,然后用这个函数遍历文件夹中的所有文件,最终将结果合并到一张表中:
陈学谦
2020/05/07
6.9K0
JSON数据获取指南!
在互联网时代,数据是金钱的来源。然而,要从海量的网页中提取需要的数据并不容易。本文将带你了解如何使用Node.js编写简易爬虫程序,帮助你轻松获取并处理JSON数据,让你不再为数据发愁。
用户614136809
2023/09/25
3840
在shell程序里如何从文件中获取第n行
有没有一种“规范”的方式来做到这一点?我一直在使用 head -n | tail -1,它可以做到这一点,但我一直想知道是否有一个Bash工具,专门从文件中提取一行(或一段行)。
程序熵
2023/09/25
4620
在shell程序里如何从文件中获取第n行
jsonp获取json数据
这两天做微信端JS接口,当时遇到的第一个问题就是权限验证的参数请求,当你请求access_token等的时候,就会存在跨域问题:然后在网上查了,采用ajax的jsonp进行跨域请求,后来报错了,返回的结果错误。然后认真看了一下文档,发现ajax的jsonp返回的数据是callback(json),卡到这里。最后同时为了安全的考虑,我就将这一部分的权限验证参数在后端做,然后前端请求,这样就避免了跨域,同时将安全考虑进去了。
Rattenking
2021/01/29
2.4K0
php – 通过curl从url获取JSON数据「建议收藏」
我试图通过curl连接从URL获取JSON数据.当我打开链接时:它显示{“version”:“N / A”,“success”:true,“status”:true}. 现在,我希望获得以上内容.
全栈程序员站长
2022/07/11
4K0
mysql 从json字符串中获取指定的key:
SELECT SUBSTR(detail,    LOCATE('"email"',detail)+LENGTH('"email":"'),    LOCATE('",', detail,LOCATE('"email"',detail))-(LOCATE('"email"',detail)+LENGTH('"email":"'))) AS email FROM tb_sync_moka2oa_full_detail where moka_id in ( 62923,    64242,    66971,    67197,    67198,    67304,    74124) and is_delete = 0 order by id desc limit 50  ; 虽然mysql 5.7之后支持 JSON_EXTRACT 了,我测试了下好像不行
凯哥Java
2022/12/16
7.3K0
treeview 如何从多个数据表中获取数据动态生成 [提问]
在 汪洋怡舟的这篇文章中【http://www.cnblogs.com/longren629/archive/2007/03/14/674633.html】只使用了一个数据表,效果如图2
跟着阿笨一起玩NET
2018/09/19
6.5K0
treeview 如何从多个数据表中获取数据动态生成 [提问]
typescript中如何直接引入json文件
这是一个单独的文件, 只是引入一个json文件, 使用typescript编写, 发现require关键字出错
cg错过
2020/11/23
8.9K0
typescript中如何直接引入json文件
从损坏的手机中获取数据
有时候,犯罪分子会故意损坏手机来破坏数据。比如粉碎、射击手机或是直接扔进水里,但取证专家仍然可以找到手机里的证据。
FB客服
2020/02/23
10.2K0
如何使用python把json文件转换为csv文件
这里有一段json格式的文件,存着全球陆地和海洋的每年异常气温(这里只选了一部分):global_temperature.json
孙晨c
2021/03/16
8.2K0
如何使用python把json文件转换为csv文件
点击加载更多

相似问题

如何获取json文件中的一些数据?

117

如何使用getJSON从json文件中获取数据

13

如何使用Observable从文件中获取json数据

129

如何使用angularjs从json文件中获取数据

13

如何使用ajax从json文件中获取数据

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文