2012-03-22 4 views
0

Я пытаюсь загрузить файл через iframe.Прочитайте содержимое iframe после отправки формы в 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()); 

чтобы получить содержание.

Проблема заключается в синхронизации между запросом my contents() и обновлением iframe, на самом деле jquery идет первым, а ПОСЛЕ обновления iframe. Таким образом, я не могу достичь реального ответа.

p.s. Я попытался использовать live(), on(), change() для содержимого фрейма, но все эти события срабатывают только один раз (когда я выбираю файл перед отправкой формы) и поэтому бесполезны

thank вы в консультации

ответ

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()); 
}); 

Это недалеко от верхней части моей головы.

+0

Мне нужно захватить контент ПОСЛЕ перезагрузки iframe НЕ ПЕРЕД: – misfotto

0

Проверьте содержимое после загрузки iframe.

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