Чтение ответа от (смоделированной) асинхронной загрузки файла с помощью jQuery, IFRAME - PullRequest
0 голосов
/ 28 сентября 2011

Я имитирую асинхронную загрузку файлов с помощью таргетинга на iframe, например:

<form id="upload_form" action="upload.php" method="POST" enctype="multipart/form-data" target="upload_iframe">
  <input type="file" name="upload_input" />
  <iframe id="upload_iframe" name="upload_iframe" src=""></iframe>
</form>

После выбора файла форма отправляется следующим образом (с использованием jQuery):

$('#upload_input').change(function() {
  $('#upload_form').submit();
});

Файл загружен, и ответ JSON отправляется в iframe. В Firebug я вижу, что содержимое iframe:

<html>
<head></head>
<body>{"success":true}</body>
</html>

Я использую событие загрузки iframe для ожидания ответа. Событие загрузки срабатывает. (На самом деле он срабатывает дважды, что является незначительной проблемой.) Однако я не могу понять, как читать ответ. Я пробовал разные звонки, но никто из них ничего не отвечал:

$('#upload_iframe').find('body')
$('#upload_iframe').html()
$('#upload_iframe').text()

Есть что-то, чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 10 июля 2012

это должно сделать вашу работу $ ('# upload_iframe'). Find ('body'). Text ()

0 голосов
/ 28 сентября 2011

Я нашел решение, которое работает, хотя оно кажется далеко не идеальным.Этот код входит в обработчик события загрузки iframe:

if (!$(this)[0].contentDocument.childNodes[0].children[1].childNodes[0]) 
{
  return;
}
var response = $(this)[0].contentDocument.childNodes[0].children[1].childNodes[0].wholeText;
var json = $.parseJSON(response);
...