Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переадресация на Java функцию, Нужновыполнить JavaScript в PHP 
V
    Опции темы
ArNic
Дата 30.1.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



есть у меня помимо прочих <div id=right> там выполняется загрузка списка, заполнение форм и т.п. действия. проблем с этим не возникает. т.е. пишу просто <a onclick="скрипт">Название</a>
Но проблема не в этом.
Например я выполнил то или иное действие, после которого должно быть автоматическое обновление страницы только в <div id=right>, т.е. если в PHP есть команда header("Location: адрес ссылки"); аналогично хочу выполнить функцию ява-скрипта, т.е. как при onclick но знаний не хватает. Пытался написать header("Location: RightDiv(div,link)") да только получил в конце адресной строки эту функцию, т.е. http://../RightDiv('right','right.php?t=1').
Самому никак не пробиться, помогите!
PM MAIL ICQ   Вверх
Sardar
Дата 30.1.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



А теперь подробно, что ты считаешь JS, где он у тебя исполняется и лучше с ссылкой на страницу. Сейчас это несколько сумбурно smile

Перейти на другую страницу можно: window.location.href = ...
Обновить только div можно через div.innerHTML = ... или очистить div от потомков (.childNodes[], .removeChild()) и затем добавить новое поддерево (.appendChild). Контент можно дёргать ajax'ом (к примеру prototype.Updater)


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
ArNic
Дата 30.1.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Главная страница:


Код

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" src="/js/prototype.js" type="text/javascript"></script>
<script language="javascript" src="/js/showhide.js" type="text/javascript"></script>
</head>
<body>
<table width="100%" style="color:white; font-weight:bold"><tr bgcolor="6c79b0">
<td><fieldset><a onmouseover="SrShow('up,up.php?t=5,left,left.php?t=5,right,right.php?t=5','1','1')">Статистика</a></fieldset></td>
<td><fieldset><a onmouseover="SrShow('up,up.php?t=2,left,left.php?t=2,right,right.php?t=2&v=5','1','1')">Продукция</a> </fieldset></td>
<td><fieldset><a onmouseover="SrShow('up,up.php?t=1,left,left.php?t=1,right,right.php?t=1&v=5','1','1')">Группы</a> </fieldset></td>
<td><fieldset><a onmouseover="SrShow('up,up.php?t=4,left,left.php?t=4,right,right.php?t=4&v=5','1','1')">Цвета</a> </fieldset></td>
<td><fieldset><a onmouseover="SrShow('up,up.php?t=3,left,left.php?t=3,right,right.php?t=3&v=5','1','1')">Библиотека</a> </fieldset></td>
<td width="100%" bgcolor="White"></td>
</tr></table>
<table width="100%">
    <tr>
        <td colspan="2"><fieldset><div id=up style="display:none"></div></fieldset></td>
    </tr>
    <tr valign="top">
        <td><fieldset><div id=left style="display:none"></div></fieldset></td>
        <td width="100%"><fieldset><div id=right style="display:none"></div></fieldset></td>
    </tr>
</table>
</html>
</body>


SrcShow функция написана (неграмотно :( (в смысле нечитабельно) поэтому выкладывать не буду) на основе фреймворка prototype, преимущественно фигурирует там 2 оператора  
1. AJAX.Updater('слой', 'ссылка')
2. $('слой').toggle

Из скрипта видно, что есть <div id=right> в нем лежат конечные данные
Если с формой можно еще при submit выполнить скрипт, то уже при переадресации (например после выполнения MySQL запроса в отдельном файле) я обычно пользуюсь командой header() но с помощью этой команды функцию яваскрипта на подобии 
Код

<a onclick="SrShow('right,right.php?t=3&v=5','1','1')"></a> 

не выполнить! Т.е. выполнился скрипт файла MySQL.class.php (например удаления из базы данных строки) и должен обновиться после этого ... по идее самостоятельно функцией SrShow('right,right.php?t=3&v=5','1','1') но если я ее выполняю после окончания php кода (показываю отрывок)
Код

<?php 
...
MySQL::close($conn);
Header("Location: SrShow('right,right.php?t=3&v=5','1','1')")
?>

то выходит в адресной строке  и естественно страница не загружается.
Пробовал уже и убрать "Location:" оставив только скрипт, хотя хорошо читал FM но надеялся получится. 
В итоге таже строчка выходит! Перерыл все не смог найти.... помогите плиз!
PM MAIL ICQ   Вверх
Sardar
Дата 30.1.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Я так понял, нужно отправить запрос на сервер, а в ответ получить вызов функции на клиенте, соответственно этот вызов выполнить.
Выполнить запрос не перезагружая основой странички можно массой способов, ты об этом знаешь раз используешь AJAX.Updater (надеюсь понимаешь как оно работает). В ответ ты получаешь контент, что на клиентской стороне выполняем. Значит можно передать и вызов функции, от простого и не секурного текста на eval() и до полноценного RPC процессора.

Вывод: на сервере вместо контента генерим вызов JS функции. Для начала сгенери SrShow('right..., полученную строку в eval(). Убедившись, что всё просто, сгенери простой XML, в котором укажи что содержит ответ (вызовы функций клиента и контент, что нужно показать). Естественно от Updater'а придётся отказаться, он ожидает просто вёрстку, напиши свой (дело 20 строк).



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
ArNic
Дата 30.1.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Не получилось! Че-то не пойму... сделал вот такую сконструированную функцию: 

Код

function ESkript(ReqSkr, ReqTelo, ReqType, ReqVar){
    Ajax.Reqest(ReqSkr, {
        method: 'post', 
        OnComplete: function(telo,type, ReqVar){
            if (ReqVar == 1){
                $(telo).update("<a onclick=\"SrShow('right,right.php?t=5&v="+ReqType+",'1','1')'\"><fieldset>Добавление прошло успешно, для переходя к списку, нажмите сюда</fieldset></a>");
                $(telo).innerHTML;
            }
        },
        OnFailure: function(telo,type, ReqVar){
            if (ReqVar == 1){
                $(telo).update("<a onclick=\"SrShow('right,right.php?t=5&v="+ReqType+",'1','1')'\"><fieldset>Произошла ошибка, для переходя к списку, нажмите сюда</fieldset></a>");
                $(telo).innerHTML;
            }
        }
    })
}


она обращается к функции SrShow

Код

function SrShow(telo, SrType, SrVar){
    Telos = telo.split(',');
    LTelos = Telos.length;
    SrShoStart = document.all(Telos[0]).style.display;
    if (SrType == 1) 
    {koef = 2;}    else {koef = 1;}
    for (var i = 0; i < LTelos; i){
        DivNam = Telos[i];
        LinSkrI = (i+1);
        LinSkr = Telos[LinSkrI];
        if (SrVar == 0 && SrType == 1){SrShowed = "none";/*document.all(DivNam).style.display;*/} else {SrShowed = SrShoStart;}
        if (SrVar == 1){SrShowed = "none";}
        if (SrShowed == "none"){
            SrContVa = i + SrVar;
            if (i < SrContVa || i < 1){
                if (SrType == 1) {myAjax = new Ajax.Updater(DivNam,LinSkr);}
                $(DivNam).show();
            }
        }
        else {$(DivNam).hide();
        }
        i += koef;
    }
}


хотел выполнить после заполнения формы: 

Код

<form method="POST" action="add.php?t=1">
        <table>
            <tr><td>№</dt><td><input type = "num" name = "ID" size="8" maxlength="9"></td></tr><br>
            <tr><td>Короткое имя</dt><td> <input type = "text" name = "LittleName" size="9" maxlength="10"></td></tr>
            <tr><td>Полное имя</dt><td> <input type = "text" name = "BigName" size="55" maxlength="50"></td></tr>                           
                                    <tr><td>Описание</dt><td> <textarea name = "Opisanie" rows=10 cols=42></textarea></td></tr>
            <tr><td></td></tr>
        </table>         
    <hr>
    <button OnClick="ESkript(\'add.php?t=1\', \'right\', \'1\', \'1\')">Добавить</button><button type="reset">Отмена</button>            
</form>


говорит, что объект Ajax.Reqest не поддерживает метод 'post' .

Да дело даже не в этом. Мне кажется не по правильному пути двигаюсь.

Это сообщение отредактировал(а) ArNic - 31.1.2008, 00:49
PM MAIL ICQ   Вверх
ArNic
Дата 31.1.2008, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Надеюсь кто-нибудь сможет мне объяснить, верно ли я иду и скорректировать при случае
PM MAIL ICQ   Вверх
Dr.Zlo
Дата 31.1.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 12.11.2007

Репутация: 1
Всего: 2



Цитата

Например я выполнил то или иное действие, после которого должно быть автоматическое обновление страницы только в <div id=right>


Возможно тебе поможет jframes, его идея как раз в том, чтоб загружать страницы в обычный див.

http://garage.pimentech.net/examples/jquery_jframes/

 К сожалению мануалы по jframes на французском, так что смотри исходник, там вроде всё просто.
PM MAIL   Вверх
ksnk
Дата 31.1.2008, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Дело, насколько я понял из личных переговоров smile, было в логической организации приложения. 
Запрос по адресу "... index.php" выводит всю необходимую для отображения информации, кухню (первый html с динамически подгружаемыми framеset'ами). В этих самых frameset'ах появляются формы, с помощью которых можно заставить выполнять приложение некие действия. Таким образом организуется своеобразное динамическиое меню.   Реакция на эти действия в обработчике этих самых форм заключалась в исполнении некоего PHP кода и вызове header('Location :'+...'index.php') - возврат на "основную" страничку приложения. Проблема была в том, что после реакции возврат происходит в "верхнее" состояние этого меню, а нужно бы на какую-то конкретную ветку, связанную с конкретным его (меню) пунктом.

Было предложено в процедурах реакции использовать возврат по адресу header('Location :'+...'index.php#xxx'),    header('Location :'+...'index.php#yyy'), а уже при загрузке index.php JavaScript'ом проверять наличие и наполненность window.location.hash. Заодно и кнопка "история" подлечилась. smile

ArNic, вам следовало бы потренироваться правильно формулировать свои "задачи". Из объяснений, прозвучавших в этом топике я, признаюсь честно, совсем ничего не понял ;-) 
"Правильно формулированная задача содержит в себе половину решения" ((с) уж не помню чей)

Это сообщение отредактировал(а) ksnk - 31.1.2008, 10:10


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ArNic
Дата 1.2.2008, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Огромное спасибо всем кто помогал мне, а особенно ksnk, который потратил час на выяснение истинной ситуации и решение проблеммы.

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.