JavaScript-用iframe上传图片怎么写回调函数?

JavaScript-用iframe上传图片怎么写回调函数?

灵芸 发布于 2016-12-30 字数 1033 浏览 1123 回复 4
(function($) {
$.fn.ajaxUpload = function(opts) {
var defaults = {
url: url + "/upload",
after: function() {
alert(0);
}
}
var options = $.extend({}, defaults, opts);
return this.each(function() {
_this = $(this);
var form = $('<form target="ajaxIframe" method="post" enctype="multipart/form-data" id="ajaxUploadForm" />');
var input = $('<input type="file" name="ajaxUploadFile" id="ajaxUploadFile" />');

form.attr("action", url + "/upload");
input.appendTo(form);
_this.append(form);
var iframe = $('<iframe name="ajaxIframe" id="ajaxIframe" />');
iframe.hide().appendTo(form);
$("#ajaxUploadFile").change(function() {
form.submit();
});
});
}
})(jQuery)

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜柠檬 2017-09-24 4 楼

直接写after: function (data, status) ,其中data就是你服务器返回的信息,比如:

 after: function (data, status)
{
if(typeof(data.error) != 'undefined')
{
if(data.error != '')
{
alert(data.error);
}else
{
alert(data.msg);
}
}
}

标准的ajaxUpload是下面的例子样式:

 function ajaxFileUpload()
{
$("#loading")
.ajaxStart(function(){
$(this).show();
})
.ajaxComplete(function(){
$(this).hide();
});

$.ajaxFileUpload
(
{
url:'doajaxfileupload.php',
secureuri:false,
fileElementId:'fileToUpload',
dataType: 'json',
after: function (data, status)
{
if(typeof(data.error) != 'undefined')
{
if(data.error != '')
{
alert(data.error);
}else
{
alert(data.msg);
}
}
},
error: function (data, status, e)
{
alert(e);
}
}
)

return false;

}

甜柠檬 2017-07-20 3 楼

你看看跨域不?
不跨域可以直接在js了使用parent取到父窗口的window,要回调哪个方法自己看了。
跨域稍微麻烦点,可以考虑转跳或输出frame,到同一个域下,用URL传参就行。
再用parent,top之类的就可以控制父窗口回调

甜柠檬 2017-03-28 2 楼

//你插件的调用方式
$.ajaxUpload({
'url':'http://www.test.php',
'after' : 'callback' //这里不使用匿名函数,而是写个函数名,并且以字符串的形式
})
//定义回调函数
function callback(){

}

接下来就插件还需要完善下:

在创建出来的form 中 增加一个 隐藏域:

 var call = $('<input type="hidden" name="call" value="'+options.after+'" />');

将这个也追加到form中:

 call.appendTo(form);

然后就是提交之后,页面响应的内容:

1 首先获取 回调函数的名称 $fun = $_POST['call'];
2,类似下边的格式输出:

 echo '<script type="text/javascript">parent.'.$fun.'();</script>';

夜无邪 2017-03-07 1 楼

遇到和你一样的问题 上传成功了。不知道回调函数怎么写。。看别人都是将form的的target指向iframe