原站连接
现在的ajax上传,都是用iframe做过渡的。实现的方式是:
1.js 生成或者页面中插入隐藏的iframe元素。
<iframe id='upiframe' name='upiframe' onload='getHtml()'></iframe>
2.提交的表单放到生成的iframe页面里面,
提交目标 target = 'upiframe' ,
3.监听iframe的onload事件,获取docuemnt ,及上传后返回的信息。
下面是代码,看起来不是很多,用起来也很方便
function $m(theVar){
return document.getElementById(theVar)
}
function remove(theVar){
var theParent = theVar.parentNode;
theParent.removeChild(theVar);
}
function addEvent(obj, evType, fn){
if(obj.addEventListener)
obj.addEventListener(evType, fn, true)
if(obj.attachEvent)
obj.attachEvent("on"+evType, fn)
}
function removeEvent(obj, type, fn){
if(obj.detachEvent){
obj.detachEvent('on'+type, fn);
}else{
obj.removeEventListener(type, fn, false);
}
}
function isWebKit(){
return RegExp(" AppleWebKit/").test(navigator.userAgent);
}
function ajaxUpload(form,url_action,id_element,html_show_loading,html_error_http){
var detectWebKit = isWebKit();
form = typeof(form)=="string"?$m(form):form;
var erro="";
if(form==null || typeof(form)=="undefined"){
erro += "The form of 1st parameter does not exists.\n";
}else if(form.nodeName.toLowerCase()!="form"){
erro += "The form of 1st parameter its not a form.\n";
}
if($m(id_element)==null){
erro += "The element of 3rd parameter does not exists.\n";
}
if(erro.length>0){
alert("Error in call ajaxUpload:\n" + erro);
return;
}
var iframe = document.createElement("iframe");
iframe.setAttribute("id","ajax-temp");
iframe.setAttribute("name","ajax-temp");
iframe.setAttribute("width","0");
iframe.setAttribute("height","0");
iframe.setAttribute("border","0");
iframe.setAttribute("style","width: 0; height: 0; border: none;");
form.parentNode.appendChild(iframe);
window.frames['ajax-temp'].name="ajax-temp";
var doUpload = function(){
removeEvent($m('ajax-temp'),"load", doUpload);
var cross = "javascript: ";
cross += "window.parent.$m('"+id_element+"').innerHTML = document.body.innerHTML; void(0);";
$m(id_element).innerHTML = html_error_http;
$m('ajax-temp').src = cross;
if(detectWebKit){
remove($m('ajax-temp'));
}else{
setTimeout(function(){ remove($m('ajax-temp'))}, 250);
}
}
addEvent($m('ajax-temp'),"load", doUpload);
form.setAttribute("target","ajax-temp");
form.setAttribute("action",url_action);
form.setAttribute("method","post");
form.setAttribute("enctype","multipart/form-data");
form.setAttribute("encoding","multipart/form-data");
if(html_show_loading.length > 0){
$m(id_element).innerHTML = html_show_loading;
}
form.submit();
}
html中的设置
<!--
VERY IMPORTANT! Update the form elements below ajaxUpload fields:
1. form - the form to submit or the ID of a form (ex. this.form or standard_use)
2. url_action - url to submit the form. like 'action' parameter of forms.
3. id_element - element that will receive return of upload.
4. html_show_loading - Text (or image) that will be show while loading
5. html_error_http - Text (or image) that will be show if HTTP error.
VARIABLE PASSED BY THE FORM:
maximum allowed file size in bytes:
maxSize = 9999999999
maximum image width in pixels:
maxW = 200
maximum image height in pixels:
maxH = 300
the full path to the image upload folder:
fullPath = http://www.atwebresults.com/php_ajax_image_upload/uploads/
the relative path from scripts/ajaxupload.php -> uploads/ folder
relPath = ../uploads/
The next 3 are for cunstom matte color of transparent images (gif,png), use RGB value
colorR = 255
colorG = 255
colorB = 255
The form name of the file upload script
filename = filename
-->
<form action="scripts/ajaxupload.php" method="post" name="standard_use" id="standard_use" enctype="multipart/form-data">
<p><input type="file" name="filename" /></p>
<button onclick="ajaxUpload(this.form,'scripts/ajaxupload.php?filename=filename&maxSize=9999999999&maxW=200&fullPath=http://www.atwebresults.com/php_ajax_image_upload/uploads/&relPath=../uploads/&colorR=255&colorG=255&colorB=255&maxH=300','upload_area','File Uploading Please Wait...<br /><img src=\'images/loader_light_blue.gif\' width=\'128\' height=\'15\' border=\'0\' />','<img src=\'images/error.gif\' width=\'16\' height=\'16\' border=\'0\' /> Error in Upload, check settings and path info in source code.'); return false;">Upload Image</button>
</form>
分享到:
相关推荐
- **创建AjaxUpload对象**:接着,使用JavaScript创建一个AjaxUpload实例,并传入配置参数,如上传URL、文件类型限制等。 ```javascript var uploader = new AjaxUpload('#uploadButton', { url: 'upload.php', ...
`ajaxupload.js` 和 `ajaxfileupload.js` 是两个用于实现异步文件上传的JavaScript库,它们简化了这个过程并提供了丰富的自定义选项。 首先,`ajaxupload.js` 是一个轻量级的插件,它扩展了传统的Ajax功能,允许...
**jQuery AjaxUpload应用详解** AjaxUpload是一款非常实用...无论是简单的个人项目还是复杂的商业应用,AjaxUpload都是一个值得信赖的工具。在实际应用中,根据项目需求,合理利用其各种特性,可以大大提升用户体验。
3. 构建隐藏iframe:为了能够处理文件上传的响应,AjaxUpload会在页面上创建一个隐藏的iframe,这个iframe将作为实际提交表单的目标。 4. 表单提交:文件选择后,AjaxUpload将文件数据封装到一个HTML表单中,并将该...
在Spring MVC 4.2框架中实现AjaxUpload(异步文件上传)是一个常见的需求,它允许用户在不刷新整个页面的情况下进行文件上传,提供更好的用户体验。以下是对这一主题的详细阐述: 1. **AjaxUpload简介**: Ajax...
使用隐藏的Iframe实现Ajax无刷新上传的基本思路是:创建一个隐藏的Iframe作为文件上传的目标,当用户选择文件并提交表单后,表单数据会通过POST方式发送到服务器端处理文件上传操作。由于Iframe的存在,上传过程不会...
UpdatePanel能够将整个表单或部分表单封装在一个“虚拟”的IFrame中,从而实现后台处理而不刷新整个页面。 4. **界面设计**: 界面设计应简洁明了,包括选择文件的按钮、上传进度条、状态提示等元素。使用CSS和...
具体到Ajax与iframe的结合使用,一个常见的场景是实现无刷新的表单提交。例如,你可以创建一个iframe作为Ajax请求的目标,这样表单提交后,响应内容会加载到iframe中,而不会影响到主页面的其他内容。这种方式在处理...
在实际开发中,我们可能会使用到名为AJAXFileUpload的库,这是一个专为实现Ajax文件上传功能的JavaScript插件。它封装了上述的实现步骤,提供了一套简单的API,便于开发者快速集成到项目中。使用时,只需在HTML中...
ASP.NET AJAX Control Toolkit提供了一个AjaxFileUpload控件,它可以方便地实现无刷新文件上传。只需在页面上添加控件,并在服务器端处理文件上传事件,即可实现Ajax上传。客户端的JavaScript库负责与服务器进行异步...
"ckeditor 自己写的一个简单的image上传js 运用iframe的ajax上传"是一个关于CKEditor自定义插件的实践案例,通过JavaScript实现了图片上传功能。下面将详细阐述这一知识点及其相关技术。 首先,CKEditor是一款开源...
以下是使用AJAX和iframe实现文件上传的基本步骤: 1. **创建隐藏的iframe**:在HTML页面中创建一个隐藏的iframe元素,设置其`name`属性,例如`iframeUploader`。这个iframe将成为文件提交的目标。 ```html <iframe...
AjaxUpLoad.js的使用实现无刷新文件上传,如图。 图1 文件上传前 图2 文件上传后 1、创建页面并编写HTML 上传文档: <span id=doc><input type=text disabled=disabled /> <input type=hidden id=...
AjaxUpload.js文件的代码,供大家参考,具体内容如下 /** * AJAX Upload ( http://valums.com/ajax-upload/ ) * Copyright (c) Andris Valums * Licensed under the MIT license ( ...
在 AJAX 出现之前,Web 开发人员就已经能够通过使用 iframe 来实现页面的部分刷新,尤其是对于文件上传这类操作而言。然而,随着 AJAX 的普及,更多的开发者转向了这种更为灵活和现代化的技术。 #### 使用 iframe ...
在现代Web开发中,文件上传是一个常见的功能,但要实现跨浏览器兼容性,尤其是在旧版本的Internet Explorer(如IE6、IE7、IE8、IE9)以及Firefox、Chrome和世界之窗等其他浏览器上,可能面临一些挑战。Ajax上传文件...
本篇文章将详细介绍如何使用jQuery的ajaxupload插件来实现实时上传文件的功能,特别是针对图片的上传。 ### jQuery AJAX Upload 插件 jQuery ajaxupload插件是一个轻量级的解决方案,它允许用户在不刷新页面的情况...
由于浏览器的安全策略,某些情况下普通的Ajax上传可能无法工作,这时Iframe Transport通过创建一个隐藏的iframe来模拟表单提交,从而实现跨域和大文件的无刷新上传。这种技术对于那些不支持FormData或XMLHttpRequest...