`

jquery使用ajax方式上传附件

阅读更多
一) 项目上需要,要用到jquery使用ajax方式上传附件的方式。
经查找,得到一个名为ajaxFileUpload的插件。
翻阅官方文档发现用法简单。

<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/ajaxfileupload.js"></script>


$.ajaxFileUpload({
	url: "teamwork/newTaskAttachmentUpload",
	secureuri: false,
	fileElementId: "attachment",
	dataType: "json",
	beforeSend: function() {
		
	},
	success: function(json) {
		alert(json.fileName);
	}
});


二) 使用发现dataType设置成"json"时success指定的函数是不能响应的。
非常奇怪,经过Firebug调试得知,后端传来的json字符串被"<pre></pre>"包裹一下了。
如:{"name":"应卓", "age":"30"}被包裹成了"<pre>{"name":"应卓", "age":"30"}</pre>"
导致不能正确地生成json对象。

具体原因未知,有可能是这个插件与jquery1.7.2不兼容所致。

三) 由于这个插件的源码不是gzip压缩版本,还有修改的可能。 找出相对应的源码。
源码修改如下,可解决问题。

    // ......

    uploadHttpData: function( r, type ) {
        var data = !type;
        data = type == "xml" || data ? r.responseXML : r.responseText;
        // If the type is "script", eval it in global context
        if ( type == "script" )
            jQuery.globalEval( data );
        // Get the JavaScript object, if JSON is used.
        if ( type == "json" ) {
        	// -------------------------------------------------------------
        	// 哥修改的地方,加了一条语句。
        	data = data.substring(5, data.indexOf("</pre>"));
        	// -------------------------------------------------------------
            eval( "data = " + data );
        }
        // evaluate scripts within html
        if ( type == "html" )
            jQuery("<div>").html(data).evalScripts();

        return data;
    }
})
分享到:
评论
5 楼 vvvpig 2012-09-02  
应为Ajax上传文件是用了iframe,一般在onload函数中获取返回的结果,不能直接使用json字符串返回结果,一般包装在一个html tag中,表明这个是html的片段,这个插件就要求包装在pre中,
在Dojo工具箱中也有类似功能的函数,见如下网页,要求包装在<textarea>中
http://www.lovewebgames.com/demo/blogs/dojo_iframe.html


dojo.io.iframe.send({
             form: "form1",
             handleAs: "json",
             url: "ajax.aspx",
             handle: function(response, args) {
                 alert(response.result)
                 return response;
             }
         });

它的语法和dojo.xhrXXX的语法是相同的,但它不支持接受xml格式内容,在服务端返回的内容必须放到一个textarea标签里,例如:


Response.Write("<html><body><textarea>{result:\"出错\"}</textarea></body></html>");

4 楼 yingzhor 2012-07-29  
谢谢指教。
3 楼 vvvpig 2012-07-29  
可以试试这个插件
http://jquery.malsup.com/form/#file-upload
提供Form的ajax提交,
使用iframe:true即可支持文件的ajax上传
2 楼 yingzhor 2012-07-29  
服务器端没有问题。 我测试过。
1 楼 vvvpig 2012-07-29  
这不是服务器端有问题吗,尽管修改客户端代码也可以

相关推荐

    jQuery ajax附件上传(支持多附件)

    jQuery ajax附件上传(支持多附件),单个附件、多个附件都支持,里面有注解,jQuery ajax附件上传(支持多附件),单个附件、多个附件都支持,里面有注解

    jquery实现多附件上传

    3. **Ajax上传**:通过创建XMLHttpRequest对象或使用jQuery的`$.ajax()`或`$.post()`方法,将文件数据发送到服务器。需要注意的是,由于文件数据的特殊性,通常需要使用FormData对象来封装文件和额外的数据。 4. **...

    ajax+jquery+ashx实现上传文件

    在Web开发中,异步传输(Ajax)技术允许我们...通过这种组合使用Ajax、jQuery和ASHX的方式,我们可以创建一个高效且用户体验良好的文件上传系统,无需离开当前页面即可完成文件上传,从而提高了Web应用的交互性和效率。

    使用jquery Ajax实现上传附件功能

    在探讨如何利用jQuery的Ajax功能上传附件之前,有必要了解Ajax与jQuery的基础知识,以及它们是如何在Web开发中应用的。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能够更新部分...

    jquery 异步ajax 上传附件

    半原生已封装,直接用就可以,不能用打我绿

    使用Ajax上传附件

    在"使用Ajax上传附件"的场景中,这一技术尤为实用,因为它允许用户在后台上传文件,而不会中断用户的其他交互体验。 首先,我们来看核心组件: 1. **upload.aspx**:这是一个ASP.NET网页,它通常包含一个用于处理...

    Servlet使用jquery.uploadify上传附件

    在这个场景中,我们将探讨如何使用Servlet结合jQuery的uploadify插件来实现附件的上传。Servlet是Java Web应用中的服务器端组件,用于接收客户端请求并返回响应。jQuery则是一种强大的JavaScript库,它简化了DOM操作...

    Lotus domino BS 多附件上传例子 Lotus domino jquery附件上传 domino上传附件不刷新界面

    在Lotus Domino与jQuery的集成中,一般会创建一个隐藏的表单或使用FormData对象来处理文件上传,同时利用Ajax发送请求,服务器处理完文件后返回响应,前端再根据响应更新界面状态。 **多附件上传** 多附件上传允许...

    Jquery ajax 上传一个或多个文件

    Jquery ajax 上传一个或多个文件,简单,易用(做成了jquery的插件)

    JQuery大文件上传

    前端可以使用jQuery的Ajax错误回调来提示用户,后端则需要处理断点续传或重新上传失败的块。 7. **优化用户体验**:为了减少用户等待时间,可以使用多线程上传或并行上传多个文件块。同时,提供取消上传的功能也很...

    ajax上传附件到服务器

    总之,使用Ajax上传附件到服务器涉及前端与后端的协同工作,需要处理文件选取、数据传输、文件存储以及安全性和性能优化等多个方面。通过理解并掌握这些知识点,可以构建高效、安全的文件上传功能。

    一个jquery 的多文件上传示例

    在IT行业中,jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。在这个“一个jquery的多文件上传示例”中,我们将探讨如何利用jQuery结合ASP.NET技术实现多文件上传的功能。...

    jquery批量上传附件c#源码

    标题 "jquery批量上传附件c#源码" 描述了一个使用jQuery和C#技术实现的批量附件上传功能。这个功能在Web应用中非常常见,尤其是在需要用户上传多份文件的场景下,可以极大地提高用户体验。接下来,我们将深入探讨...

    树形控件和jquery上传附件

    当用户在树形控件中选择一个项目时,可以使用jQuery上传附件功能来提交相关的文档或图片。后台通过JDBC与数据库交互,将附件信息存储在数据库中,与选定的项目关联。 5. 性能优化与安全性 在实际应用中,我们还需要...

    jQuery-form.js、FormData、html input file、easyuiFileBox的文件上传

     使用FormData方式提交上传附件与相关数据  同时实现jQuery-form.js附件上传功能  同时实现标准的html input file提交  同时实现easyuiFileBox与标准的ajax附件上传功能 有数据库,下载直接能运行

    ASP.NET JQuery无刷新上传附件

    ASP.NET与JQuery结合实现无刷新上传附件是一种常见的前端与后端交互技术,它极大地提升了用户体验,让用户在不离开当前页面的情况下完成文件上传操作。这一技术主要涉及到以下几个关键知识点: 1. **ASP.NET**:ASP...

    基于jquery的多附件上传

    综上所述,基于jQuery实现多附件上传涉及HTML5的多文件选择、File API、Ajax上传和插件应用等多个方面。通过合理利用这些技术,我们可以创建出高效、友好的文件上传功能,提升Web应用的用户体验。

    JQ多附件上传

    "JQ多附件上传"是一种基于JQuery的插件技术,它解决了用户一次性上传多个文件的需求,大大提升了用户体验。JQuery是JavaScript的一个库,以其简洁的API和丰富的功能而广受欢迎,它简化了DOM操作、事件处理以及Ajax...

    jquery动态添加多附件上传实例,开发实例

    本实例聚焦于使用jQuery动态添加多附件上传功能,这是一个常见的需求,特别是在内容管理系统、论坛或者在线表单中。在实际开发中,实现这样一个功能可能会遇到各种挑战,如文件类型检查、文件大小限制、进度显示以及...

Global site tag (gtag.js) - Google Analytics