ajaxfileupload-1.0.0.js 3.06 KB
jQuery.extend({createUploadIframe:function(e,t){var r="jUploadFrame"+e;if(window.ActiveXObject){var o=document.createElement('<iframe id="'+r+'" name="'+r+'" />');"boolean"==typeof t?o.src="javascript:false":"string"==typeof t&&(o.src=t)}else{(o=document.createElement("iframe")).id=r,o.name=r}return o.style.position="absolute",o.style.top="-1000px",o.style.left="-1000px",document.body.appendChild(o),o},createUploadForm:function(e,t){var r="jUploadForm"+e,o="jUploadFile"+e,n=jQuery('<form  action="" method="POST" name="'+r+'" id="'+r+'" enctype="multipart/form-data"></form>'),a=jQuery("#"+t),u=jQuery(a).clone();return jQuery(a).attr("id",o),jQuery(a).before(u),jQuery(a).appendTo(n),jQuery(n).css("position","absolute"),jQuery(n).css("top","-1200px"),jQuery(n).css("left","-1200px"),jQuery(n).appendTo("body"),n},ajaxFileUpload:function(n){var e=(n=jQuery.extend({},jQuery.ajaxSettings,n)).fileElementId,a=jQuery.createUploadForm(e,n.fileElementId),u=(jQuery.createUploadIframe(e,n.secureuri),"jUploadFrame"+e),t="jUploadForm"+e;n.global&&!jQuery.active++&&jQuery.event.trigger("ajaxStart");var c=!1,d={};n.global&&jQuery.event.trigger("ajaxSend",[d,n]);var r=function(e){var t=document.getElementById(u);try{t.contentWindow?(d.responseText=t.contentWindow.document.body?t.contentWindow.document.body.innerHTML:null,d.responseXML=t.contentWindow.document.XMLDocument?t.contentWindow.document.XMLDocument:t.contentWindow.document):t.contentDocument&&(d.responseText=t.contentDocument.document.body?t.contentDocument.document.body.innerHTML:null,d.responseXML=t.contentDocument.document.XMLDocument?t.contentDocument.document.XMLDocument:t.contentDocument.document)}catch(e){jQuery.handleError(n,d,null,e)}if(d||"timeout"==e){var r;c=!0;try{if("error"!=(r="timeout"!=e?"success":"error")){var o=jQuery.uploadHttpData(d,n.dataType);n.success&&n.success(o,r),n.global&&jQuery.event.trigger("ajaxSuccess",[d,n])}else jQuery.handleError(n,d,r)}catch(e){r="error",jQuery.handleError(n,d,r,e)}n.global&&jQuery.event.trigger("ajaxComplete",[d,n]),n.global&&!--jQuery.active&&jQuery.event.trigger("ajaxStop"),n.complete&&n.complete(d,r),jQuery(t).unbind(),setTimeout(function(){try{jQuery(t).remove(),jQuery(a).remove()}catch(e){jQuery.handleError(n,d,null,e)}},100),d=null}};0<n.timeout&&setTimeout(function(){c||r("timeout")},n.timeout);try{a=jQuery("#"+t);jQuery(a).attr("action",n.url),jQuery(a).attr("method","POST"),jQuery(a).attr("target",u),a.encoding?a.encoding="multipart/form-data":a.enctype="multipart/form-data",jQuery(a).submit()}catch(e){jQuery.handleError(n,d,null,e)}return window.attachEvent?document.getElementById(u).attachEvent("onload",r):document.getElementById(u).addEventListener("load",r,!1),{abort:function(){}}},uploadHttpData:function(r,type){var data=!type;return data="xml"==type||data?r.responseXML:r.responseText,"script"==type&&jQuery.globalEval(data),"json"==type&&eval("data = "+data),"html"==type&&jQuery("<div>").html(data).evalScripts(),data},handleError:function(e,t,r,o){e.error&&e.error.call(e.context||e,t,r,o),e.global&&(e.context?jQuery(e.context):jQuery.event).trigger("ajaxError",[t,e,o])}});