2014-02-20 4 views

ответ

2

Самый простой способ получить «Ajax» загрузить файл на работу, чтобы использовать замочную скважину IFRAME в качестве цели для вашей формы:

<form action="handler/url" enctype="multipart/form-data" target="keyhole" method="post"> 
    <input type="file" multiple name="user_file[]" /> 
    <input type="submit" id="upload" value="Upload"> 
</form> 
<!-- style the following to be tiny/hidden --> 
<iframe id="keyhole" src="about:blank"></iframe> 

Трюк с этим, чтобы показать индикатор ожидания, и скрыть после завершения загрузки.

<div id="waiting" style="display:none"></div> 
<script type="text/javascript"> 
    $('upload').observe('click', function(evt){ 
     $('waiting').show(); 
    }); 
</script> 

В обработчике загрузки файла, возвращает текст/JavaScript заголовок и следующий скрипт после успешной загрузки:

var waiting = top.document.getElementById('waiting'); 
if(waiting) waiting.style.display = 'none'; 

Естественно, это будет работать только тогда, когда обе конечные точки находятся на том же сервере, в силу той же политики происхождения.

+0

Мне нравится этот подход, но что вы хотите «точно вернуть текст/заголовок javascript»? Вы возвращаете содержимое типа «text/javascript» или вы хотите вернуть пустой html-ответ с javascript, выписанным в элементе

Смежные вопросы