3
依赖:http://malsup.com/jquery/form/
效果:
<div class="avatar-upload" id="avatar-upload">
<form method="POST" action="url-here" accept-charset="UTF-8" id="upload" enctype="multipart/form-data">
<a href="#" class="btn button-change-profile-picture">
<label for="upload-profile-picture">
<span id="upload-avatar">更换新头像</span>
<input name="image" id="image" type="file" class="manual-file-chooser js-manual-file-chooser js-avatar-field">
</label>
</a>
</form>
<div class="span5">
<div id="output" style="display:none">
<img src="#">
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
var options = {
beforeSubmit: showRequest,
success: showResponse,
dataType: 'json'
};
$('#image').on('change', function(){
$('#upload-avatar').html('正在上传...');
$('#upload').ajaxForm(options).submit();
});
});
function showRequest() {
$("#validation-errors").hide().empty();
$("#output").css('display','none');
return true;
}
function showResponse(response) {
if(response.success == false)
{
var responseErrors = response.errors;
$.each(responseErrors, function(index, value)
{
if (value.length != 0)
{
$("#validation-errors").append('<div class="alert alert-error"><strong>'+ value +'</strong><div>');
}
});
$("#validation-errors").show();
} else {
$("#output img").attr('src',response.imageUrl);
console.log(response.imageUrl);
}
}
</script>
服务器端实现的比如Ajax.php
,你只要保证返回imageUrl这个json字段就可以了