js ajax php上传图片插件,写了个Ajax无刷新上传上传图片的小插件

原理: 隐藏iframe提交数据到后台(php)

js源码

/**

* (伪)无刷新上传图片

* @requires jquery,bootstrap(.css),font-awesome

* @author saonian

* @date 2017年4月6日

* @time 22:54:43

*/

$(function () {

var ico_left = (lu_upload_div_w - 15) / 2;

var ico_top = (lu_upload_div_h - 14) /2;

var html =

'

'

+'

'

+'

'

+''

+''

+'

+'img_error'

+'

'

+''

+''

+'

'

+'

'

+'

'

+'

';

$('body').find('#lu_upload_div').append(html);

$('body').find('#'+_custom_form+'').append('');

var _title_pic = $(".title_pic_m");

if(_title_pic && _title_pic.length >0){

$(document).on('mouseover mouseout','.title_pic_m',function (e) {

if(e.type === 'mouseover'){

_title_pic.tooltip('show');return false;

}else if (e.type === 'mouseout'){

_title_pic.tooltip('hide');return false;

}

})

}

//创建一个隐藏的iframe,用于上传图片及接收php返回的图片地址

var ifm_id = Math.floor(Math.random() * 1000);

$(document).on('change','#title_pic_m',function () {

var upload_file = $(this).val();

if(upload_file != ''){

var ifm_name = 'title_pic_form' + ifm_id;

var ifm_doc = '';

$("body").append(ifm_doc);

$("#title_pic_form").attr('target', ifm_name).submit();

$(".loading").show();

$(".pic_noticle").hide();

$("#my_ifm").load(function () {

var responseText = $('iframe')[0].contentDocument.body.textContent;

var responseData = JSON.parse(responseText) || {};

if(responseData.ok == 1){

$(".loading").hide();

$("#title_pic_m").hide();

$(".edit_img").show();

$('input[name="article_pic"]').val(responseData.data);

$('input[name="article_pic_m"]').val(responseData.data_m);

$(".pre_article_pic").show().children('img').attr('src',''+responseData.data+'').show();

}else{

alert(responseData.info);

$(".loading").hide();

$(".pic_noticle").show();

}

});

}

});

//重新上传题图

$(document).on('click','.reload_img',function () {

$("#title_pic_m").show().trigger("click");

var title_pic = $('input[name="article_pic"]').val();

var title_pic_m = $('input[name="article_pic_m"]').val();

var _this = $(this);

$.ajax({

url:lu_upload_del_url,

type:"post",

data:{title_pic:title_pic,title_pic_m:title_pic_m},

dataType:'json',

beforeSend : function () {

_this.unbind('click');

},

success: function (response) {

_this.bind('click');

$(".edit_img").hide();

if(response.ok == 1){

$(".pre_pic_re").attr('src','').hide();

$('input[name="article_pic"]').val('');

$('input[name="article_pic_m"]').val('');

}else{

alert(response.info);

}

}

});

});

//删除题图

$(document).on('click','.del_img',function () {

if (confirm('确定删除题图吗?')){

var _this = $(this);

var title_pic = $('input[name="article_pic"]').val();

var title_pic_m = $('input[name="article_pic_m"]').val();

$.ajax({

url:lu_upload_del_url,

type:"post",

data:{title_pic:title_pic,title_pic_m:title_pic_m},

dataType:'json',

beforeSend : function () {

_this.unbind('click');

},

success: function (response) {

_this.bind('click');

$(".edit_img").hide();

$("#title_pic_m").show();

$(".pic_noticle").show();

if(response.ok == 1){

$(".pre_pic_re").attr('src','').hide();

$('input[name="article_pic"]').val('');

$('input[name="article_pic_m"]').val('');

}else{

alert(response.info);

}

}

});

}

});

});

使用方法

var lu_upload_url = '/up_title_pic_m';//图片上传地址

var lu_upload_del_url = '/del_article_pic';//图片删除地址

var lu_upload_div_w = '120';//预览图宽度

var lu_upload_div_h = '80';//预览图高度

var _custom_form = 'c_form';//表单ID

后台处理

后台(以php为例)需要返回以下json字符串

参数

说明ok

1(成功)0(失败)

info

当 ok为0(上传失败)时的错误提示信息

data

图片地址

data_m

手机端图片地址(可选)

上传成功后会在form插入两个隐藏域

value值为后台传回的图片地址

删除图片

删除图片时会向后台传递两个参数

title_pic 图片地址

title_pic_m 手机端图片地址

例子

public function del_article_pic(){

$res = ['ok'=>0,'info'=>''];

if (checkLogin()){

if (IS_POST){

$post_data = I('post.');

$title_pic = $post_data['title_pic'] ?? '';

$title_pic_m = $post_data['title_pic_m'] ?? '';

if (!empty($title_pic) && !empty($title_pic_m)){

$title_pic_pathinfo = parse_url($title_pic);

$title_pic_m_pathinfo = parse_url($title_pic_m);

$title_pic_pathinfo = $title_pic_pathinfo['path'] ?? '';

$title_pic_m_pathinfo = $title_pic_m_pathinfo['path'] ?? '';

@unlink('.'.$title_pic_pathinfo);

@unlink('.'.$title_pic_m_pathinfo);

$res['ok'] = 1;

}

}

}

$this->ajaxReturn($res);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用ajax提交form表单可以实现不刷新页面的数据交互,而ajax文件上传则可以实现异步上传文件。 首先,需要在前端页面中引入jquery库和jquery.form插件。 然后,通过jquery的ajax方法来提交表单数据,代码如下: ```javascript $(document).ready(function(){ $('#submitForm').click(function(){ var formData = new FormData($('#myForm')[0]); $.ajax({ url: 'submit.php', // 提交的url地址 type: 'POST', // 提交方式 data: formData, dataType: 'json', // 返回值类型 cache: false, // 是否缓存 processData: false, // 是否处理数据 contentType: false, // 是否设置内容类型 success: function(data){ // 成功回调函数 }, error: function(){ // 失败回调函数 } }); return false; }); }); ``` 其中,`#submitForm`为提交按钮的id,`#myForm`为表单的id,`submit.php`为后台处理程序的url地址。 对于文件上传,需要将`processData`和`contentType`设置为`false`,并使用`FormData`对象来传递表单数据,如下所示: ```javascript $(document).ready(function(){ $('#submitForm').click(function(){ var formData = new FormData($('#myForm')[0]); $.ajax({ url: 'submit.php', // 提交的url地址 type: 'POST', // 提交方式 data: formData, dataType: 'json', // 返回值类型 cache: false, // 是否缓存 processData: false, // 是否处理数据 contentType: false, // 是否设置内容类型 success: function(data){ // 成功回调函数 }, error: function(){ // 失败回调函数 } }); return false; }); }); ``` 后台处理程序可以通过`$_FILES`变量来获取上传的文件信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值