在iframe中提交表单后,请阅读iframe内容

时间:2012-03-22 16:25:34

标签: image events iframe bind sync

我正在尝试通过iframe上传文件。

我以这种方式创建iframe:

    <iframe frameBorder="0" height="50px" width="100%" id="iframe-upload"/>

之后我将iframe附加到DOM:

$('#iframe-upload').contents().find('body').append('<form method="post" action="admin/images/upload" enctype="multipart/form-data" id="form-upload-image"><input name="data[image]" type="file" id="image-upload" /><input type="button" id="btn"></form>').appendTo("#formupload");

提交我这样做:

$("#iframe-upload").contents().find('#btn').bind('click', function(){
    $("#iframe-upload").contents().find('#form-upload-image').submit()

})

现在,我无法弄明白我什么时候打电话:

console.log($("#iframe-upload").contents());

获取内容。

问题是我的contents()请求和iframe刷新之间的同步,实际上jquery是第一个,而iframe刷新之后。通过这种方式,我无法达到真正的反应。

P.S。 我已经尝试了live(),on(),更改()con框架内容,但所有这些事件只启动一次(当我在提交表单之前选择文件时),因此无用

谢谢你的建议

2 个答案:

答案 0 :(得分:0)

您应该可以在提交表单之前从iframe中抓取内容。为此,您可以将函数绑定到表单的onSubmit事件。

$('#form-upload-image').bind('submit', function (event) {
    event.preventDefault();

    console.log($("#iframe-upload").contents());

    this.submit();
});

或可能

$('#form-upload-image').submit( function () {
    console.log($("#iframe-upload").contents());
});

这只是我的头脑。

答案 1 :(得分:0)

加载iframe后检查内容。

$('#iframe').load(function () {
    $(this).contents();
});