热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

推迟文件上传表单提交,直到验证为止[重复]-Postponefileuploadingformsubmissionuntilitisvalidated[duplicate]

PossibleDuplicate:Pauseformsubmissionforvalidation可能重复:暂停表单提交以进行验证Itsacontinuatio

Possible Duplicate:
Pause form submission for validation

可能重复:暂停表单提交以进行验证

It's a continuation of this post. So basically I'm uploading a file in an iframe. But before submitting, I grab data from the form and using django's built-in system check their validity (currently it's just a dummy function that takes foo: bar, and returns json result = "true" ). I use two buttons - fake visible, that calls validation and second - hidden, that submits the form. With the code below I'm able to perform validation, then when it's result is positive form is submitted. Now if I hardcode target for form, my alert is not shown and I'm pretty sure that the upload is not performed (unfortunately list of uploads is refreshed each 8h so I'll know if it worked in some time). If the target is not specified, file is uploaded with redirect so the whole 'submit' event listener is omitted. What more, tho whole code doesn't work at all in Chrome. And it takes like 2-3s (looking at firebug) between receiving response from validation, and displaying it which I've never seen before. I'm really desperate on making it work, since I've already wasted 2 days and without any results.

这是这篇文章的延续。所以基本上我是在iframe中上传文件。但在提交之前,我从表单中获取数据并使用django的内置系统检查它们的有效性(目前它只是一个虚函数,需要foo:bar,并返回json result =“true”)。我使用了两个按钮 - 假可见,调用验证,第二个 - 隐藏,提交表单。使用下面的代码,我能够执行验证,然后当它的结果是肯定的形式提交。现在,如果我对表单的目标进行硬编码,我的警报就不会显示,而且我很确定没有执行上传(不幸的是,上传列表每8小时刷新一次,所以我知道它是否在一段时间内有效)。如果未指定目标,则使用重定向上载文件,以便省略整个“submit”事件侦听器。更重要的是,整个代码在Chrome中根本不起作用。在接收验证响应和显示我之前从未见过的响应之间需要2-3s(查看firebug)。我真的很想让它发挥作用,因为我已经浪费了2天而且没有任何结果。

Sample link:

示例链接:

http://ntt.vipserv.org/artifact/

http://ntt.vipserv.org/artifact/

JS:

JS:


html:

HTML:

Submit

{% render_upload_data upload_data %} {{ form }}


EDIT:

编辑:

IE's debugger shows Object doesn't support this property or method for:

IE的调试器显示Object不支持此属性或方法:

    fileUploadForm.addEventListener("submit", function() {
        alert("sent in iframe");
        fileUploadForm.target = 'upload_target';
    }, false);

because of using addEventListener, but no more errors. Firebug is clean. In Chrome :

因为使用了addEventListener,但没有更多的错误。萤火虫很干净。在Chrome中:

"Failed to load resource" at check-form. This is interesting, since the result at .../check-form/ is :

检查表单中的“无法加载资源”。这很有趣,因为... / check-form /的结果是:

{
message: "RespOnse= True"
result: "true"
}

so looks fine to me. Tried also data.message instead of data["message"] but nothing changes.

所以看起来很好。尝试了data.message而不是数据[“message”],但没有任何变化。

2 个解决方案

#1


1  

Maybe a little bit of an annoying solution, but that's the joy of working with Javascript. Leave the communication between browser and server completely up to Javascript, and not to HTML. Meaning:

也许是一个令人讨厌的解决方案,但这是使用Javascript的乐趣。将浏览器和服务器之间的通信完全保留为Javascript,而不是HTML。含义:

  • When you write your HTML, leave out the action; change the submit buttons to regular buttons.
  • 编写HTML时,请忽略该操作;将提交按钮更改为常规按钮。
  • Run validation via ajax (as is done now), and if the validation is successful call a new function which will manage the form submition.
  • 通过ajax运行验证(如现在所做),如果验证成功,则调用一个新函数来管理表单子目录。
  • This form-submitting function will display the message you wanted, and after that will add the action to the form, and will run form.submit();
  • 此表单提交功能将显示您想要的消息,然后将该操作添加到表单,并将运行form.submit();

Hope this helps

希望这可以帮助

#2


0  

Look, you don't have to use fileUploadForm.addEventListener("submit", function (){...}, false). This is exactly what $(fileUploadForm).submit(function (){...}) does, and it has the advantage of working across all browsers.

看,你不必使用fileUploadForm.addEventListener(“submit”,function(){...},false)。这正是$(fileUploadForm).submit(function(){...})所做的,它具有跨所有浏览器工作的优势。


推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • JS实现一键分享功能
    本文介绍了如何使用JS实现一键分享功能,并提供了2019独角兽企业招聘Python工程师的标准。同时,给出了分享到QQ空间、新浪微博和人人网的链接。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
author-avatar
otion
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有