[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка файла без перезагрузке страницы
linf
Вот форма:

<INPUT maxlength=100 id="title">
<TEXTAREA
id="text"></TEXTAREA>
<BUTTON
onClick='send'></BUTTON>
<INPUT
type="file" id="img">


Загружаю поля формы с помощью следующей функции:

function send()
{
var title = encodeURIComponent($('#title').val());
var text = encodeURIComponent($('#text').val());
$.ajax ({
type: "POST",
url: 'doska/control.php',
cache: false,
data: {title: title, text: text},
success: function(html)
{
$("#result").empty();
$("#result").html(html);
}
}
);
}


Данные полей передаются нормально, как и требовалось без перезагрузки
Подскажите, как теперь что бы ничего не перезагружать сделать отправку файла или хотя бы получить $_FILES.

_____________
Live in new format =)
Fredrich
то же очень интересен ответ

_____________
Видео уроки по Yii
sharki
linf
Юзать либо фреймовые плагины (не айс) либо полуфлешовые загрузчики, типа SWFUpload и т.п
inpost
Форму можно отправлять прямо на iframe (!!!), делаешь какой-нибудь маленький iframe для обработки, туда и отсылаешь запрос. Очень удобно и просто, если хочешь отправить форму с файлом, даже Аякс не нужен smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
ZSH
тут посмотри
linf
Пытаюсь реализовать с помощью фрейма (пример нашел в интернет):

<html>
<head>
<meta
charset="utf-8">

<title>
Облако тегов</title>

<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script
type="text/javascript">

function
hideBtn(){
$('#upload').hide();
$('#res').html("Идет загрузка файла");
}

function handleResponse(mes) {
$('#upload').show();
if (mes.errors != null) {
$('#res').html("Возникли ошибки во время загрузки файла: " + mes.errors);
}
else {
$('#res').html("Файл " + mes.name + " загружен");
}
}



</script>
</head>
<body>
<form
action="upload.php" method="post" target="hiddenframe" enctype="multipart/form-data" onsubmit="hideBtn();" name="myform">
<input
type="file" id="userfile" name="userfile" />
<input
type="submit" name="upload" id="upload" value="Загрузить" />
</form>
<div
id="res"></div>
<iframe
id="hiddenframe" name="hiddenframe" style="width:0px; height:0px; border:0px"></iframe>

</body>
</html>


<?php 

if(isset($_POST['upload'])){
//Список разрешенных файлов
$whitelist = array(".gif", ".jpeg", ".png", ".jpg");
$data = array();
$error = true;

//Проверяем разрешение файла
foreach ($whitelist as $item) {
if(preg_match("/$item\$/i",$_FILES['userfile']['name'])) $error = false;
}

//если нет ошибок, грузим файл
if(!$error) {

$folder = 'test/';//директория в которую будет загружен файл

$uploadedFile = $folder.basename($_FILES['userfile']['name']);

if(is_uploaded_file($_FILES['userfile']['tmp_name'])){

if(move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadedFile)){

$data = $_FILES['userfile'];
}
else {
$data['errors'] = "Во время загрузки файла произошла ошибка";
}
}

else {
$data['errors'] = "Файл не загружен";
}
}

else{

$data['errors'] = 'Вы загружаете запрещенный тип файла';
}


//Формируем js-файл
$res = '<script type="text/javascript">';
$res .= "var data = new Object;";
foreach($data as $key => $value){
$res .= 'data.'.$key.' = "'.$value.'";';
}
$res .= 'window.parent.handleResponse(data);';
$res .= "</script>";

echo $res;

}
else{
die("ERROR");
}

?>


Можно ли сделать, что бы отправка, сразу же после выбора файла, пробовал ставить
onchange='document.myform.submit();'

в поле выбора формы, но почему то не работает

_____________
Live in new format =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.