Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.10.2013, 13:55
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

Четко сформулированная задача предыдущего вопроса
Здравствуйте, я уже задавал ранее этот вопрос, но меня попросили четко сформулировать задачу , поэтому прошу не обвинять меня в спаме, а помочь мне разобраться
Есть функция которая отправляет содержимое формы на сервер и выводит html ответ
<script type="text/javascript" src="http://scriptjava.net/source/scriptjava/scriptjava.js"></script>
<div class="form_test" >
<form id="test_form1" class="test_form" method="post" enctype="multipart/form-data" onSubmit="">
<input class="file_form" class="btn_photo_1" type="file" name="upload_file" />
<input  type="hidden" name="id_article" value="1">
<input  type="hidden" name="id_photo" value="photo1">
</form>
<div class="result" id="result1"style="position:relative;"></div>	
</div>

$('.form_test').change(function(){
var form = $(this).find('.test_form').attr('id');
SendFile();

function SendFile() {
//отправка файла на сервер
$$f({
			
	formid:form,//id формы
	url:'/functions/change_photo1',
	//адрес на серверный скрипт который будет принимать файл
	onstart:function () {//действие при начале загрузки файла
	$$('result','начинаю отправку файла');//в элемент с id="result" выводим результат
	},
	onsend:function () {//действие по окончании загрузки файла
	$$('result',$$('result').innerHTML+'<br />файл успешно загружен');//в элемент с id="result" выводим результат
	}
	});
        }
	

});

echo'
<script type="text/javascript">
var elm=parent.window.document.getElementById("result");
 elm.innerHTML=elm.innerHTML+"<br />id_article '.str_replace("\r","",str_replace("\n","<br />",htmlspecialchars(stripslashes($_POST['id_article'])))).' id_photo '.str_replace("\r","",str_replace("\n","<br />",htmlspecialchars(stripslashes($_POST['id_photo'])))).' ";
</script>
 ';

Сервер замечательно получает форму и вот на сервере я формирую html ответ, обратите внимание что ответ выводится в блок с id result, вопрос в том как сформировать и вывести ответ в блок с классом result вложенным в блок с классом .form_test при изменении которого и происходит отправка формы то есть в $(this).find('.result').

Помогите пожалуйста функция работает отлично только вот ответ надо подругому чтобы выводился потому что таких форм предполагается множество на странице и чтобы не плодить функции необходимо ее переписать, помогите пожалуйста кто спец в javascript, спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 30.10.2013, 14:15
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сохрани ссылку на this обработчика события:
var form = this;

А затем уже используй ее в callback-функции:
$(form).find('.result').html('bla-bla');
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 30.10.2013, 14:18
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

но у меня же и в пхп формируется так
var elm=parent.window.document.getElementById("result" );
не могли бы вы сформировать этот пример - плохо в javascript разбираюсь, извините, помогите пожалуйста
Ответить с цитированием
  #4 (permalink)  
Старый 30.10.2013, 15:20
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Внутри обработчика события, this ссылается на элемент, на котором возникло событие. Сохрани ссылку на этот элемент в переменную (только не form, как я написал, а то у тебя уже есть переменная form).
А в функции onsend уже используй эту ссылку (переменную).
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 30.10.2013, 16:02
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

Так?
var this_form = this;
onsend:function () {//действие по окончании загрузки файла
 $(this_form).find('.result').innerHTML;

так ответа нет

Последний раз редактировалось imediasun1, 30.10.2013 в 16:05.
Ответить с цитированием
  #6 (permalink)  
Старый 30.10.2013, 16:06
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

danik.js,
помоги пожалуйста до конца разобраться
Ответить с цитированием
  #7 (permalink)  
Старый 30.10.2013, 16:25
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

правильно ли будет заменить эту запись
var elm=parent.window.document.getElementById("result");

на
var elm=$(this_form).find('.result');

Если нет то как правильно, ведь скрипт в пхп передает именно блоку с id result innerHTML
Ответить с цитированием
  #8 (permalink)  
Старый 30.10.2013, 16:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от imediasun1
так ответа нет
Какого ответа? И нет у объекта jQuery свойства innerHTML. Смотри мой код внимательней.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 30.10.2013, 20:12
Профессор
Посмотреть профиль Найти все сообщения от imediasun1
 
Регистрация: 23.12.2012
Сообщений: 437

ну ответ же должен приходить в js ? , да сформулируй уже полностью код (надо же как то отправить его из пхп еще), что я гадаю так или нет- ты же знаешь код, напиши его просто,пожалуйста я сразу все пойму
так пишу
$(form).find('.result').html('Файл переписан');

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

Последний раз редактировалось imediasun1, 30.10.2013 в 20:22.
Ответить с цитированием
  #10 (permalink)  
Старый 02.11.2013, 07:15
Новичок на форуме
Отправить личное сообщение для jssj Посмотреть профиль Найти все сообщения от jssj
 
Регистрация: 02.11.2013
Сообщений: 6

Поменяй вот тут ошибка

<div class="result" id="result" style="position:relative;"></div>


ну и если не работает можно отдельно написать

$('.form_test').change(function(){
	var form = $(this).find('.test_form').attr('id');
	SendFile();     
	});



function SendFile() {
	//отправка файла на сервер
	$$f({
	             
	    formid:form,//id формы
	    url:'/functions/change_photo1',
	    //адрес на серверный скрипт который будет принимать файл
	    onstart:function () {//действие при начале загрузки файла
	    $$('result','начинаю отправку файла');//в элемент с id="result" выводим результат
	    },
	    onsend:function () {//действие по окончании загрузки файла
	    $$('result',$$('result').innerHTML+'<br />файл успешно загружен');//в элемент с id="result" выводим результат
	    }
	 });
}


не путай класс с id - это 2 разные вещи
функция $$() не умеет работать с классом
http://scriptjava.net/documentation

Последний раз редактировалось jssj, 02.11.2013 в 07:25.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск