AJAX无刷新上传图片
目录结构如下:
其中files文件夹中存放上传来的图片。
index.html代码如下:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
.demo{width:620px; margin:30px auto}
.demo p{line-height:32px}
.btn{position: relative;overflow: hidden;margin-right: 4px;display:inline-block;*display:inline;padding:4px 10px 4px;font-size:14px;line-height:18px;*line-height:20px;color:#fff;text-align:center;vertical-align:middle;cursor:pointer;background-color:#5bb75b;border:1px solid #cccccc;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.btn input {position: absolute;top: 0; right: 0;margin: 0;border: solid transparent;opacity: 0;filter:alpha(opacity=0); cursor: pointer;}
.progress { position:relative; margin-left:100px; margin-top:-24px; width:200px;padding: 1px; border-radius:3px; display:none}
.bar {background-color: green; display:block; width:0%; height:20px; border-radius: 3px; }
.percent { position:absolute; height:20px; display:inline-block; top:3px; left:2%; color:#fff }
.files{height:22px; line-height:22px; margin:10px 0}
.delimg{margin-left:20px; color:#090; cursor:pointer}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
</head>
<body>
<!--<form id='myupload' action='action.php' method='post' enctype='multipart/form-data'>-->
<p id="main">
<span class="demo">
<input id="fileupload" type="file" name="mypic">
<span class="btn">上传</span>
</span>
</p>
<!--</form>-->
<script type="text/javascript">
$(function () {
var bar = $('.bar');
var percent = $('.percent');
var showimg = $('#showimg');
var progress = $(".progress");
var files = $(".files");
var btn = $(".btn span");
$("p").wrap("<form id='myupload' action='action.php' method='post' enctype='multipart/form-data'></form>");
$("#fileupload").change(function(){
$("#myupload").ajaxSubmit({
dataType: 'json',
beforeSend: function() {
showimg.empty();
progress.show();
var percentVal = '0%';
bar.width(percentVal);
percent.html(percentVal);
btn.html("上传中...");
},
uploadProgress: function(event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
bar.width(percentVal);
percent.html(percentVal);
},
success: function(data) {
files.html("<b>"+data.name+"("+data.size+"k)</b> <span class='delimg' rel='"+data.pic+"'>删除</span>");
var img = "http://demo.helloweba.com/upload/files/"+data.pic;
showimg.html("<img src='"+img+"'>");
btn.html("添加附件");
},
error:function(xhr){
btn.html("上传失败");
bar.width('0')
files.html(xhr.responseText);
}
});
});
$(".delimg").live('click',function(){
var pic = $(this).attr("rel");
$.post("action.php?act=delimg",{imagename:pic},function(msg){
if(msg==1){
files.html("删除成功.");
showimg.empty();
progress.hide();
}else{
alert(msg);
}
});
});
});
</script>
</body>
</html>
jquery.form.js代码如下:
"use strict"
feature == $("<input type='file'/>").get(0).files !=== window.FormData !===
(!'ajaxSubmit: skipping submit process - no element selected' method, action, url, $form = ( options == 'function'== .attr('method'= .attr('action'= ( action === 'string') ? $.trim(action) : ''= url || window.location.href || ''
url = (url.match(/^([^#]+)/)||[])[1= $.extend(|| 'GET'/^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
veto =.trigger('form-pre-serialize', ['ajaxSubmit: submit vetoed via form-pre-serialize trigger'
(options.beforeSerialize && options.beforeSerialize(, options) === 'ajaxSubmit: submit aborted via beforeSerialize callback' traditional = ( traditional ==== elements = qx, a = ==
(options.beforeSubmit && options.beforeSubmit(a, , options) === 'ajaxSubmit: submit aborted via beforeSubmit callback'
.trigger('form-submit-validate', [a, 'ajaxSubmit: submit vetoed via form-submit-validate trigger' q == ( q ? (q + '&' + (options.type.toUpperCase() == 'GET'+= (options.url.indexOf('?') >= 0 ? '&' : '?') += ;
= q;
callbacks =
(!options.dataType && oldSuccess = options.success || fn = options.replaceTarget ? 'replaceWith' : 'html' = (data, status, xhr) {
context = options.context || ;
( i=0, max=callbacks.length; i < max; i++||
fileInputs = $('input:file:enabled[value]', );
hasFileInputs = fileInputs.length > 0 mp = 'multipart/form-data' multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == fileAPI = feature.fileapi &&"fileAPI :" + shouldUseFrame = (hasFileInputs || multipart) && !
(options.iframe !== && (options.iframe ||
((hasFileInputs || multipart) &&
( k=0; k < elements.length; k++=
.trigger('form-submit-notify', [
serialized = $.param(extraData).split('&' len = result = (i=0; i < len; i++= serialized[i].split('='0])] = decodeURIComponent(part[1