当前位置: 代码迷 >> Java Web开发 >> iframe成功异步下传后,如何调用前端的回调函数?
  详细解决方案

iframe成功异步下传后,如何调用前端的回调函数?

热度:1207   发布时间:2013-02-25 21:15:07.0
iframe成功异步上传后,怎么调用前端的回调函数??
现在成功异步上传了,,需要有个回调函数。。 不知道怎么调用这个函数,求指导。。

------解决方案--------------------------------------------------------
Form:
<form action="#" method="post" enctype="multipart/form-data" onsubmit="return chekcForm(this)">

Struts :
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.print("JSON字串"); // {"statusCode":200; "message":"成功"; "loadUrl":"http://"}
out.flush();
out.close();

JQ:

var frame = {
ajaxDone:function(json){
if (json.statusCode == 200){
$('#messageDiv')(json.message).show();
$.jquery.load(json.loadUrl);
} else {

}
},
frameDone:function(config){
var ifr = null,
fm = null,
defConfig = {
formObj: $('#form'),
complete: function(response) {},
};

config = $.extend(defConfig, config);

var $form = config.formObj;
var frameName = 'callbackframe';

ifr = $('<iframe name="'+ frameName +'" id="'+ frameName +'" style="display:none;"></iframe>');
ifr.appendTo($('body'));
$form.attr("target",frameName);

ifr.load(function(){
var response = this.contentWindow.document.body.innerHTML;
config.complete.call(this, response);
ifr.remove();
ifr = null;
});
return false;
}
}


function checkForm(form){
frame.frameDone({
formObj: $form,
complete: function(response){
var j = $.parseJSON(response);
frame.ajaxDone(j);
}
});
return true;
}

------解决方案--------------------------------------------------------
个人愚见:
创建一个空的jsp页面,你的action文件上传中,最后返回到该页面。同时,将你需要掉的回调函数的名称告诉给该页面。。。
然后在这个空页面上写几行js代码。。。使用window.parent["回调函数的名称"]();

当然,这其中,不要急着remove掉你创建的iframe。
  相关解决方案