jQuery 关于IE9上传文件无法进入后台原因及解决办法(ajaxfileupload.js第四弹) 推荐 原创 我不会抽烟 2014-09-11 14:45:54 博主文章分类:jQuery ©著作权 文章标签 chrome 异步提交表单 文章分类 jQuery 前端开发 ©著作权归作者所有:来自51CTO博客作者我不会抽烟的原创作品,请联系作者获取转载授权,否则将追究法律责任 第四弹的诞生完全不在自己最初的计划之中,是有个网友看了先前关于《ajaxfileupload.js系列》的文章后提出的问题,由于自己一直是用chrome浏览器去测试demo,完全忽略IE浏览器(其实是故意的,懒得想浏览器兼容的问题,哈哈~),所以当我使用IE9去运行demo的时候,确实发现了同样的问题,就是ajax异步提交表单无法进入后台。下面是解决整个问题的过程,以我在《jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹) 》中上传的demo为基准,这样会更加容易理解一些。虽然整个问题的表面现象是ajax异步提交表单无法进入后台,但是当我在浏览器中跟代码走一遍的时候,发现的首个问题就是下面的提示。 出现这个问题的原因其实要归罪于function getFilePath(obj) { if (obj) { if (window.navigator.userAgent.indexOf("MSIE") >= 1) { obj.select(); return document.selection.createRange().text; } else if (window.navigator.userAgent.indexOf("Firefox") >= 1) { if (obj.files) { return obj.files.item(0).getAsDataURL(); } return obj.value; } return obj.value; } }这个函数,最初加这个函数的时候是为了可以兼容,不巧,却弄巧成拙了。这个函数是从网上直接贴下来的,当时就是怕不同浏览器直接用$().val()得不到选择的文件名称。但是当使用IE浏览器时,实际上这段代码返回的document.selection.createRange().text这个是一个“”(空字符串),所以这块可以直接使用obj.value或者无需使用这个方法,直接通过$().val()得到文件名就行。而令我诧异的是,在IE下使用$().val()居然能得到文件的完整路径!!!而不单单只是一个文件名,这样就不用先上传再预览了,可以直接预览图片了。这个问题解决了,重新运行代码,出现 这个问题的原因是在jQuery-1.4.2插件之后,已经去掉了handleError的方法,而下载了demo的朋友会发现,demo中使用的是jQuery-2.0.3插件。那么是不是把jQuery插件换一下就行了?不行。因为之所以用jQuery-2.0.3是因为只有在jQuery-1.7版本之后才支持delegate方法,但是我们可以在ajaxfileupload.js插件中加入handleError方法。copy下面代码到ajaxfileupload.js就可以了 handleError: function( s, xhr, status, e ) { // If a local callback was specified, fire it if ( s.error ) { s.error.call( s.context || s, xhr, status, e ); } // Fire the global callback if ( s.global ) { (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] ); } }这个问题解决了,再次重新运行代码,出现 到这里实际上就是这篇文章的重点了,打开浏览器跟了一下,就是在jQuery(form).submit();这里抛出了异常。原因是这样的,IE出于安全性的考虑,上传文件时必须要点击<input type=’file’>控件本身才能上传成功。而因为<input type=’file’>长的实在太丑,很少能满足我们的审美,我们通常都是会隐藏它,然后用其他的button去触发它。而这么做在IE9下是不被允许的。至于解决方法,如果大家坚持用更加漂亮的上传控件,那我觉得用一些css的技巧吧,把<input type=’file’>控件遮挡下什么的,这个还是要根据实际情况来定,说来比较恶心,就一个IE9,破坏了其他浏览器的和谐,真是叫人抓心挠肝。对于之前的demo,如果把<input type=’file’>显示出来,那么相应的后台也要进行一下修改,主要还是获取文件名的部分要将System.Web.HttpContext.Current.Request.Files[0].FileName改成System.IO.Path.GetFileName(System.Web.HttpContext.Current.Request.Files[0].FileName))因为此时的System.Web.HttpContext.Current.Request.Files[0].FileName是一个完整的文件路径,而不单单是一个文件名。 当然,如果我们不想把图片先save到本地的话,可以直接用图片路径去预览,但是要知道,这个只适合IE呀~~所以,大家自己斟酌。 关于这个<input type=’file’>控件在IE9下能必须要被实际点击才能上传的问题,我想一定有其他解决的办法,希望知道的朋友能够分享一下。 系列分享:《ASP.NET 使用js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)》《jQuery 关于ajaxfileupload.js插件的逐步解析(ajaxfileupload.js第二弹) 》《jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹) 》 赞 收藏 评论 分享 举报 上一篇:jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹) 下一篇:jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 分布式拒绝服务攻击(DDoS)| 防御 | 监测 - 介绍什么是分布式拒绝服务攻击(DDoS)。 - 解释 DDoS 攻击对网络和服务的影响。 分布式拒绝服务攻击(DDoS)是一种网络攻击,通过大量流量或请求淹没目标服务器/网络资源,导致服务不可用或降级。其主要特点是利用多个来源攻击者发起攻击,使得被攻击目标无法应对大规模的流量请求。 网络安全 DDoS 系统安全 网络通信 通信安全 Docker 开放远程访问 当我们需要打包docker镜像但又不想在本地安装docker时,我们就可以连接远程服务器上的docker,使用它来打包进行。在idea中可以使用docker插件,方便快捷管理远程服务器上的docker容器。但这一切的前提是服务的docker开放了远程访问端口。方式一:直接暴露便捷 /usr/lib/systemd/system/docker.service 文件vi /usr/lib/system docker 服务器 远程服务器 nginx 配置特定IP访问 一、Nginx配置中的IP地址变量在Nginx的配置文件中,通过一些变量来表示客户端的IP地址。其中最常用的是$remote_addr变量,它代表了客户端的IP地址。二、简单的IP地址过滤配置1.允许特定IP地址访问location / { allow 192.168.1.100; deny all;}上述配置表示只允许IP地址为192.168.1.100的客户端访问该locati IP Nginx 特定IP访问 访问限制 MySQl拒绝访问 发生mysql拒问访问5的错误时,需要用管理员的身份运行CMD,然后开启mysql服务: $ net start mysql mysql 访问localhost失败拒绝访问 访问localhost失败拒绝访问 tomcat 搜索 java IIS拒绝访问 昨天下班时,从同事的移动硬盘里拷贝一开源项目,帮忙看看,当想在本地运行IIS架设个网站时,提示iis.msc拒绝访问.晕,中招了.马上运行”恶意软件清理助手”,查出几个木马,清空.以为可以了,运行IIS还是提示出错,并发现在”控制面版”>>“管理工具”中,所有扩展名为msc的都打不开了,哎..在运行中” mmc %systemroot%"system32"inetsrv"iis.msc iis system 扩展 工具 c Nagios拒绝访问 脚本安装Nagios后重启服务,在浏览器端登录时发现总是无法访问,确定selinux和iptables都已经关闭。 最终在检查时发现,lamp架构有问题,导致这种结果。 解决,重新安装lamp架构,最终Nagios也实现登录监控。 浏览器 监控 nagios 拒绝访问 scrapy拒绝访问 其实类似的有关于运行成功 python 加入域|拒绝访问 加入域的时候提示拒绝访问|活动目录域加入域权限委派。加入域的时候打算用委派的方式 可是没有 找到 “将计算机加入域”这个任务,只有其他的比如添加用户,查看信息这些,常见任务里面没有。系统是win2003企业版sp1,用委派了权限的帐号和一般的users组的帐号加入域的时候提示拒绝访问,不知道什么原因。回答:根据您的描述,我对这个问题的理解是:在域中委派控制权限时,未看到“将计算机加入域”权限。如果我的理解有误,请告诉我。这可能是您在OU上委派控制,只有在域层级上委派控制,才能看到“将计算机加入域”权限,因为加入域是针对一个域的,并非针对某个OU,所以只有在域层级上才能看到这个选项。建议您再做一次权限委派,添加“将计算机加入域”权限,使用委派的帐号加入域,看是否还有问题。 加入域拒绝访问 委派将计算机加入域权限 如何让域用户有加入域权限 域用户不能加入域 没有找看到将计算机加入域 linux mysql拒绝访问 在使用Linux系统中,经常会遇到MySQL拒绝访问的问题,这对于开发者和系统管理员来说可能会带来很多困扰。究其原因,主要是由于权限设置不正确或者一些配置错误导致的。在这篇文章中,我们将详细探讨如何解决Linux系统中MySQL拒绝访问的问题。首先,我们需要明确的是,MySQL拒绝访问通常是由于权限设置不正确导致的。在Linux系统中,MySQL通过用户名和密码来进行身份验证,然后根据用户拥有 MySQL 权限设置 拒绝访问 修复documents拒绝访问 正在升级windows xp sp3,结果复制文件到一半,跳出个beethov9.wm_无法复制到指定目录,而且忽略不了,会中止SP3的继续安装。查了下,这个beethov9.wma应该复制到C:\Documents and Settings\All Users\Documents\My Music\示例音乐下,但本机上的C:\Documents and Settings\All Users\Do 职场 windows 休闲 sp3 documents OpenService 失败5:拒绝访问 本人在卸载Apache时,在cmd中输入sc delete apache,提示OpenService 失败5:拒绝访问,查阅资料才发现,是因为权限不够。解决办法:以管理员权限运行cmd,再输入命令:sc delete 要删除的服务名,就OK了。 Apache Service open c# HttpListener拒绝访问 直接记录解决步骤: 程序代码: 1.先删除可能存在的错误urlacl: 2.重新添加,user选择所有人: 3.配置防火墙(或者直接关闭): 程序代码 Web 命令行 System Volume Information 拒绝访问 <br />【关于U盘中毒,隐藏属性无法取消的解决办法】<br />attrib命令:网上那些用法 system oracle nested join table linux mysql 拒绝root访问 在使用Linux系统搭建MySQL数据库的过程中,有时候会遇到拒绝root访问的问题。这个问题在很多情况下会让人感到困惑,因为root用户本应该拥有最高的权限。首先,让我们来解释一下为什么会出现拒绝root访问的情况。在MySQL中,root用户并不是直接属于MySQL数据库的root用户。在安装MySQL的过程中,会要求我们设置一个root用户,并且这个root用户和系统的root用户可能并 MySQL root用户 数据库 强制删拒绝访问文件 有时,居然删不了文件,说什么拒绝访问.这个时候,可以用del /f来强制删文件.删了2G垃圾,还是值得的. 拒绝访问 数据 访问所有应用程序提示拒绝访问 问题现象:控制器更新后,所有用户访问应用程序都提示拒绝访问问题原因:新控制器时执行升级时,控制器未在站点DB中完全升级。解决方法:运行Get-BrokerController并检查控制器的状态。如果控制器状态为"Transitioning",则按照以下步骤操作。一旦控制器的状态被验证为“转换”,转到数据库服务器并找到站点数据库。展开Tables并查找"chb_conf 拒绝访问 Tomcat限制用域名访问,拒绝ip访问 : tomcat 2012-07-13 18:37 784人在找《微信跳转技术,网页跳转微信跳转链接系统,微信跳转接口,微信跳转源码,》 评论(0) 收藏 举报 ... xml java html Linux下mysql访问拒绝 mysql访问拒绝在CentOS5.6上面装好mysql后,发觉Mysql一直不好用。一,错误描述:Mysql中添加用户之后可能出现登录时提示ERROR 1045 (28000): Access denied for user的错误.二,出现错误情况 :状态一:# mysqladmin create dbname 命令老是返回mysqladmin: co linux mysql 数据库 休闲 mysql访问拒绝 arcgis 拒绝访问 temp 目录 拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“IIS APPPOOL\ArcGISServicesAppPool”没有访问 temp 目录的足够权限。CodeDom 将使用进程正在使用的用户帐户进行编译,这样,如果用户没有访问系统 temp 目录的权限,将无法进行编译。使用 Path.GetTempPath() API 找到 temp 目录的位置。安装完arcgis 后访 arcgis 拒绝访问 temp 目录