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; } })
相关推荐
TONIYH 2020-07-22
83510998 2020-07-18
wcqwcq 2020-06-26
delmarks 2020-06-14
ppsurcao 2020-06-14
tthappyer 2020-06-07
88570299 2020-06-05
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16