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

发布于 2016-12-30 04:05:25 字数 1033 浏览 1214 评论 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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(4

甜柠檬 2017-09-24 17:02:22

直接写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 23:57:22

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

甜柠檬 2017-03-28 15:13:35

//你插件的调用方式
$.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 15:04:40

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文