Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Асинхронная загрузка контента вродовского файла


Автор: Cross 25.4.2011, 21:37
Здравствуйте! 

Проблема такая: необходимо дать пользователю возможность загружать контент в поле <TEXTAREA> из документов MS WORD. Без перезагрузки страницы, т.е. через AJAX. 

Для редактирования контента использую TinyMCE. 
Код

<!-- подключение визуального редактора TinyMCE -->
 <form method="post" action="somepage">
        <textarea name="content" style="width:100%">
        </textarea>
</form>


Далее не знаю как поступить. Надо бы сделать кнопку, чтобы по щелчку сначала 
появлялось стандартное окошко выбора файла, а затем без загрузки на сервер - 
происходила бы передача контента в форму. 

Вот код для считывания контента (но это с загрузкой файла на сервер и с перезагрузкой страницы):

Код

function uploadFile() {
    $uploaddir = "resources";
    $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
    if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
    echo "<h3>Файл успешно загружен на сервер</h3>";
    else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
    move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploaddir.$_FILES['uploadfile']);
    $str = "'".$uploaddir.(string)$_FILES["uploadfile"]["name"]."'";
    
        $word = new COM("word.application") or die ("Could not initialise MS Word object.");
    $word->Documents->Open($str); 
    $content = (string) $word->ActiveDocument->Content; 
    echo "<script type=\"text/javascript\">ajaxLoad('".$content."');</script>";
        $word->ActiveDocument->Close(false); 
        $word->Quit(); 
        $word = null; 
        unset($word); 
 }


Как бы сделать это на AJAX? 

В редакторе TinyMCE есть стандартная функция для асинхронной загрузки:

Код

function ajaxLoad() {
    var ed = tinyMCE.get('content');
    // Do you ajax call here, window.setTimeout fakes ajax call
    ed.setProgressState(1); 
    window.setTimeout(function() {
            ed.setProgressState(0); 
            ed.setContent('HTML content that got passed from server.');
    }, 3000);
}


P.S. только вчера начала изучать AJAX - не совсем понимаю как это реализовать. 
Помогите пожалуйста. 
Заранее благодарю ) 

Автор: Noviy 25.4.2011, 21:48
Воспользуйтесь http://api.jquery.com/jQuery.post/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)