Четко сформулированная задача предыдущего вопроса
Здравствуйте, я уже задавал ранее этот вопрос, но меня попросили четко сформулировать задачу , поэтому прошу не обвинять меня в спаме, а помочь мне разобраться
Есть функция которая отправляет содержимое формы на сервер и выводит 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, спасибо |
Сохрани ссылку на this обработчика события:
var form = this; А затем уже используй ее в callback-функции: $(form).find('.result').html('bla-bla'); |
но у меня же и в пхп формируется так
var elm=parent.window.document.getElementById("result" ); не могли бы вы сформировать этот пример - плохо в javascript разбираюсь, извините, помогите пожалуйста |
Внутри обработчика события, this ссылается на элемент, на котором возникло событие. Сохрани ссылку на этот элемент в переменную (только не form, как я написал, а то у тебя уже есть переменная form).
А в функции onsend уже используй эту ссылку (переменную). |
Так?
var this_form = this; onsend:function () {//действие по окончании загрузки файла $(this_form).find('.result').innerHTML; так ответа нет |
danik.js,
помоги пожалуйста до конца разобраться |
правильно ли будет заменить эту запись
var elm=parent.window.document.getElementById("result"); на var elm=$(this_form).find('.result'); Если нет то как правильно, ведь скрипт в пхп передает именно блоку с id result innerHTML |
Цитата:
|
ну ответ же должен приходить в js ? , да сформулируй уже полностью код (надо же как то отправить его из пхп еще), что я гадаю так или нет- ты же знаешь код, напиши его просто,пожалуйста я сразу все пойму
так пишу $(form).find('.result').html('Файл переписан'); отображается при завершении события, но мне же надо еще ответ из пхп получить, раньше он с помощью innerHTML приходил, а теперь как его получить |
Поменяй вот тут ошибка
<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. |