Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Четко сформулированная задача предыдущего вопроса (https://javascript.ru/forum/dom-window/42526-chetko-sformulirovannaya-zadacha-predydushhego-voprosa.html)

imediasun1 30.10.2013 13:55

Четко сформулированная задача предыдущего вопроса
 
Здравствуйте, я уже задавал ранее этот вопрос, но меня попросили четко сформулировать задачу , поэтому прошу не обвинять меня в спаме, а помочь мне разобраться
Есть функция которая отправляет содержимое формы на сервер и выводит 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, спасибо

danik.js 30.10.2013 14:15

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

А затем уже используй ее в callback-функции:
$(form).find('.result').html('bla-bla');

imediasun1 30.10.2013 14:18

но у меня же и в пхп формируется так
var elm=parent.window.document.getElementById("result" );
не могли бы вы сформировать этот пример - плохо в javascript разбираюсь, извините, помогите пожалуйста

danik.js 30.10.2013 15:20

Внутри обработчика события, this ссылается на элемент, на котором возникло событие. Сохрани ссылку на этот элемент в переменную (только не form, как я написал, а то у тебя уже есть переменная form).
А в функции onsend уже используй эту ссылку (переменную).

imediasun1 30.10.2013 16:02

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

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

imediasun1 30.10.2013 16:06

danik.js,
помоги пожалуйста до конца разобраться

imediasun1 30.10.2013 16:25

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

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

Если нет то как правильно, ведь скрипт в пхп передает именно блоку с id result innerHTML

danik.js 30.10.2013 16:37

Цитата:

Сообщение от imediasun1
так ответа нет

Какого ответа? И нет у объекта jQuery свойства innerHTML. Смотри мой код внимательней.

imediasun1 30.10.2013 20:12

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

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

jssj 02.11.2013 07:15

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

<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


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