Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос про веб-форму(с меня баланс) (https://javascript.ru/forum/misc/44989-vopros-pro-veb-formu-s-menya-balans.html)

Boomerml 10.02.2014 01:19

Вопрос про веб-форму(с меня баланс)
 
Доброго времени! Ну понеслась..

Опишу суть есть веб форма, какие то text поля, файл, капча.
Проблема вся состоит в этом файле. Мне нужно сперва отправить файл на сервер, после получить к нему путь, и передать этот путь в веб-форму. Подключил плагин, посмотреть работу можно здесь - jQuery Form Plugin. Всё вроде просто, но из за незнание javascript'a у меня проблема на 2 дня, я не понимаю логику, последовательность. :(.

HTML
<form enctype="multipart/form-data" method="post" action="/tmpl/ajax/upload.php" id="jq_vac_formid">
	<input type="file" name="jq_vac_file">
	<input type="submit" value="отправить файл">
</form>

вызов таков
// Загрузка файла
	var bar = $('.up_bar');// Для loader'a
	var percent = $('.up_percent');// Для loader'a
	var status = $('#up_status');// Просто передаст статус после успешной загрузки

	$('#jq_vac_formid').ajaxForm({// по id формы работает функция плагина
		beforeSend: function() {
			status.empty();
			var percentVal = '0%';
			bar.width(percentVal)
			percent.html(percentVal);
		},
		uploadProgress: function(event, position, total, percentComplete) {
			var percentVal = percentComplete + '%';
			bar.width(percentVal)
			percent.html(percentVal);
			//console.log(percentVal, position, total);
		},
		success: function() {
			var percentVal = '100%';
			bar.width(percentVal)
			percent.html(percentVal);
		},
		complete: function(xhr) {
			status.html(xhr.responseText);
			alert(xhr.responseText);
		}
	});

Тестил, файл отправляется, loader работает. alert(xhr.responseText); - выдаёт мне путь. Все хорошо.

Дальше я пишу обработку клика для веб-формы

$('.jq_test').click(// Кликнули на элемент submit веб-формы
		function(){
			// тут скажем я проверю поле input name="jq_vac_file" на наличие файла
			// напишу ещё всякой беды в основном сбор значений с остальных input'ов и их проверки.

			// Пользователь выбрал файл
			// после каких то условий, если все хорошо - вызову принудительно клик submit
			// файл отлично закачаеться на сервер
			// alert(xhr.responseText); - выдаст мне путь
			$('#jq_vac_formid').submit();

// Но что делать дальше?
			// Мне нужно получить на него ссылку для дальнейших манипуляций
			// Подумав репой :) мне нужно дождаться загрузки каким то методом onload? или подобным, тк пока не шарю в этом.
			// как то передать сюда xhr.responseText
			// Как быть?

			// Просто чтобы было понятно, дальше работает пост
			$.post(
				// Который и должен передать этот путь.
			);
});


UDP. Благодарю за оперативность! Да просто заранее спасибо! :)
UDP. Ну или хотя бы скажите в какую сторону копать,буду лапатить дальше...

danik.js 10.02.2014 05:06

Цитата:

Сообщение от Boomerml
Который и должен передать этот путь

Куда передать? На сервер? А у сервера че, склероз? Ему же только что передали файл, он че не запомнит его имя?

Зачем засылать файл вперед формы? Зачем все усложнять? Почему не делать все (отправка формы, засыл файла) одним HTTP-запросом?

Boomerml 10.02.2014 10:12

Вопрос закрыт, подсказали на другом ресурсе.

Цитата:

Сообщение от danik.js (Сообщение 296829)
Куда передать? На сервер? А у сервера че, склероз? Ему же только что передали файл, он че не запомнит его имя?

Зачем засылать файл вперед формы? Зачем все усложнять? Почему не делать все (отправка формы, засыл файла) одним HTTP-запросом?

И действительно, тривиальная задача. Но тут свои подмажки, рассказывать нет смысла, аж самому противно всё это писать если честно...


Часовой пояс GMT +3, время: 00:20.