Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как мне сделать это? [6]
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Как мне сделать это?

Страниц (8): « 1 2 3 4 5 [6] 7 8 »
 

76. IllusionMH - 29 Апреля, 2012 - 01:55:59 - перейти к сообщению
zypikov, так не работает, т.к. синтаксис не подразумевает необходимости кавычек, а значит создается свойство с именем param_name, а не содержащейся в ней строке.

В принципе сделать можно, нужно разделить функцию на две, и обработчик вешать не на ссылку, а на элемент списка
CODE (javascript):
скопировать код в буфер обмена
  1. //Dropdown for topbar nav
  2. jQuery(".secondary-nav li").mouseenter(function(){
  3.   jQuery(this).addClass("open");
  4. });
  5. jQuery(".secondary-nav li").mouseenter(function(){
  6.   jQuery(this).removeClass("open");
  7. });

Но если нет эффектов, то лучше это сделать через CSS
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. .secondary-nav li:hover ul.menu-dropdown {
  3.   display: block;
  4. }
  5.  

Примерно так, но щас ничего другого не соображу
77. Kreks - 30 Апреля, 2012 - 17:13:24 - перейти к сообщению
Приветствую, есть правый блок и левый,в левом располагаются ссылки с именами пользователей,правое пусто. При нажатии на ссылку,без перезагрузки страницы,в правом должны появится что нибудь о пользователе. Как такое сделать? Интересует jQuery часть нажатие->асинхронная подгрузка данных по конкретному пользователю.(как то еще надо параметр его передать). Прошу помощи. Заранее спасибо
78. zypikov - 01 Мая, 2012 - 11:32:54 - перейти к сообщению
IllusionMH пишет:
В принципе сделать можно, нужно разделить функцию на две, и обработчик вешать не на ссылку, а на элемент списка
CODE (javascript):
скопировать код в буфер обмена
//Dropdown for topbar nav
jQuery(".secondary-nav li").mouseenter(function(){
  jQuery(this).addClass("open");
});
jQuery(".secondary-nav li").mouseenter(function(){
  jQuery(this).removeClass("open");
});


У меня не работает, но это скорее всего из-за класса open. Я скрипт брал с другого сайта и там для него другое назначение. А почему на одно событие вешается два разных действия? Т.е. при mouseenter сначала применется к элементу списка класс open, а потом тут же он удаляется?

IllusionMH пишет:
Но если нет эффектов, то лучше это сделать через CSS
CODE (htmlphp):
скопировать код в буфер обмена
 
.secondary-nav li:hover ul.menu-dropdown {
  display: block;
}
 


это работает)

Kreks пишет:
Приветствую, есть правый блок и левый,в левом располагаются ссылки с именами пользователей,правое пусто. При нажатии на ссылку,без перезагрузки страницы,в правом должны появится что нибудь о пользователе. Как такое сделать? Интересует jQuery часть нажатие->асинхронная подгрузка данных по конкретному пользователю.(как то еще надо параметр его передать). Прошу помощи. Заранее спасибо

А обязательно jQuery?
79. Kreks - 01 Мая, 2012 - 11:39:28 - перейти к сообщению
zypikov пишет:
IllusionMH пишет:
В принципе сделать можно, нужно разделить функцию на две, и обработчик вешать не на ссылку, а на элемент списка
CODE (javascript):
скопировать код в буфер обмена
//Dropdown for topbar nav
jQuery(".secondary-nav li").mouseenter(function(){
  jQuery(this).addClass("open");
});
jQuery(".secondary-nav li").mouseenter(function(){
  jQuery(this).removeClass("open");
});


У меня не работает, но это скорее всего из-за класса open. Я скрипт брал с другого сайта и там для него другое назначение. А почему на одно событие вешается два разных действия? Т.е. при mouseenter сначала применется к элементу списка класс open, а потом тут же он удаляется?

IllusionMH пишет:
Но если нет эффектов, то лучше это сделать через CSS
CODE (htmlphp):
скопировать код в буфер обмена
 
.secondary-nav li:hover ul.menu-dropdown {
  display: block;
}
 


это работает)

Kreks пишет:
Приветствую, есть правый блок и левый,в левом располагаются ссылки с именами пользователей,правое пусто. При нажатии на ссылку,без перезагрузки страницы,в правом должны появится что нибудь о пользователе. Как такое сделать? Интересует jQuery часть нажатие->асинхронная подгрузка данных по конкретному пользователю.(как то еще надо параметр его передать). Прошу помощи. Заранее спасибо

А обязательно jQuery?


Вообще без разницы,половина кода на AJAX
80. IllusionMH - 01 Мая, 2012 - 21:06:56 - перейти к сообщению
zypikov пишет:
А почему на одно событие вешается два разных действия?

Потому, что писал в 4 утра Радость второе событие должно было быть mouseleave
81. КЫР - 02 Мая, 2012 - 10:28:40 - перейти к сообщению
Kreks пишет:
Приветствую, есть правый блок и левый,в левом располагаются ссылки с именами пользователей,правое пусто. При нажатии на ссылку,без перезагрузки страницы,в правом должны появится что нибудь о пользователе. Как такое сделать? Интересует jQuery часть нажатие->асинхронная подгрузка данных по конкретному пользователю.(как то еще надо параметр его передать). Прошу помощи. Заранее спасибо

CODE (javascript):
скопировать код в буфер обмена
  1. $('.links').click(function() {
  2.      $('#userdata').load('userdata.php',{name: $(this).text()});
  3. });
  4.  

селекторы сами свои вставите =)
тогда в userdata.php у вас переменная $_POST['name'] будет содержать имя пользователя
если надо передавать id, создайте у ссылок атрибут data-id, и считывайте его
82. Kreks - 02 Мая, 2012 - 21:39:12 - перейти к сообщению
Цитата:

CODE (javascript):
скопировать код в буфер обмена
  1. $('.links').click(function() {
  2.      $('#userdata').load('userdata.php',{name: $(this).text()});
  3. });
  4.  



Делаю по другому. Прошу помощи теперь с передачей параметра из пост в setInterval.Итак смотрим код:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. // Кликнули
  4. $('#link').live('click',function(){
  5. // Реакция в нужном окне
  6.  $('#User').text('Загрузка...');*/
  7.  
  8. //Передаем нужные данные  <a href = '?id=1&contact=$ContactInfos->id' id='link'>
  9. // Берем из ссылки contact и отправляем в обработчик
  10.    $.post("getUser.php",$(this).attr('href'),function(data){
  11.        
  12.  
  13.  
  14. // Код который не срабатывает как надо
  15. /* setInterval(function(){
  16. $.post("getUser.php",$('#link').attr('href'),function(data){
  17.                 $('#Mess').html(data);  
  18.         });
  19.         },2000);
  20. */
  21. // Код который не срабатывает как надо
  22.  
  23.  
  24. //Возвращяем
  25.         $('#User').html(data);  
  26.  
  27.     });
  28.  
  29.     return false;
  30. });
  31.  
  32.  


Проблема в том, что мне надо подгружать данные раз в 15 секунд (они меняются), и вот как я setInterval в эту функцию не пихал, он не передает id. Кто может описать правильно setInterval
83. IllusionMH - 02 Мая, 2012 - 22:03:42 - перейти к сообщению
Kreks, а если попробовать так
CODE (javascript):
скопировать код в буфер обмена
  1. $.post("getUser.php" + $('#link').attr('href'),function(data){


Кста, а у ссылки в браузере все параметры правильно выглядят?
84. Kreks - 02 Мая, 2012 - 22:53:01 - перейти к сообщению
IllusionMH пишет:
Kreks, а если попробовать так
CODE (javascript):
скопировать код в буфер обмена
  1. $.post("getUser.php" + $('#link').attr('href'),function(data){


Кста, а у ссылки в браузере все параметры правильно выглядят?



Параметры выглядят верно,ваш способ напомнил метод get, сработал неправильно, но возникла другая проблема, итак создал спан,и передал ему айди
CODE (html):
скопировать код в буфер обмена
  1.  
  2. // Вот он
  3. <span id='iduser'>$ContactInfos->id</span>
  4. <a href = 'contact=$ContactInfos->id' id='link'>$ContactInfos->myname</a>
  5.  

Рядом с ссылками мне вывело все айди моих пользователей.Идем далее написал обновление:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.         setInterval(function(){
  3.         //В обработчиен постом принимаю контакт
  4.         $.post("getUser.php",{contact:$("#iduser").text()},function(data){
  5.                 $('#User').html(data);
  6.         });
  7.         },2000);
  8.  

Так вот этот код,работает,тоесть обновляет,но берет первый попавшийся спан (у самой первой ссылки ) а не тот который я нажму. Что такое,почему он так делает...

В браузере нормально:
CODE (html):
скопировать код в буфер обмена
  1.  
  2.  
  3. <div id="linkuser">
  4. <span id="iduser">5</span>
  5. <a href="contact=5" id="link">Имя 1</a><br/>
  6. </div>
  7.  
  8.  
  9. <div id="linkuser">
  10. <span id="iduser">17</span>
  11. <a href="contact=17" id="link">Имя 2</a><br/>
  12.  
  13.  
  14.  
  15.  



Надеюсь на вашу помощь,ибо разгадка близка но все время что то одно не работает.Заранее спасибо.
85. IllusionMH - 03 Мая, 2012 - 00:55:49 - перейти к сообщению
Kreks пишет:
В браузере нормально:

Один id у нескольких элементов - ненормально!
Нужно менять на класс.
Еще предвидев проблему с накоплением интервалов при кликах по разным юзверям, сделал очистку таймера, и глобальную переменную с текущими данными для запроса
CODE (javascript):
скопировать код в буфер обмена
  1. var currentUserData, interval;
  2. $('.infolink').live('click', function() {
  3.     currentUserData = this.search.substr(1); //нужно убрать ? чтобы не передавалось как ?id
  4.     clearInterval(interval);
  5.     // Реакция в нужном окне
  6.     $('#User').text('Загрузка...');
  7.  
  8.     // Передаемнужныеданные < a href = '?id=1&contact=$ContactInfos->id'id = 'link' >
  9.     // Берем из ссылки contact и отправляем в обработчик
  10.     $.post("getUser.php", currentUserData, function(data) {
  11.  
  12.         interval = setInterval(function() {
  13.             $.post("getUser.php", currentUserData, function(data) {
  14.                 $('#Mess').html(data);
  15.             });
  16.         }, 15000);
  17.  
  18.         //Возвращяем
  19.         $('#User').html(data);
  20.     });
  21.  
  22.     return false;
  23. });
86. Kreks - 03 Мая, 2012 - 22:13:32 - перейти к сообщению
IllusionMH пишет:
Kreks пишет:
В браузере нормально:

Один id у нескольких элементов - ненормально!
Нужно менять на класс.
Еще предвидев проблему с накоплением интервалов при кликах по разным юзверям, сделал очистку таймера, и глобальную переменную с текущими данными для запроса
CODE (javascript):
скопировать код в буфер обмена
  1. var currentUserData, interval;
  2. $('.infolink').live('click', function() {
  3.     currentUserData = this.search.substr(1); //нужно убрать ? чтобы не передавалось как ?id
  4.     clearInterval(interval);
  5.     // Реакция в нужном окне
  6.     $('#User').text('Загрузка...');
  7.  
  8.     // Передаемнужныеданные < a href = '?id=1&contact=$ContactInfos->id'id = 'link' >
  9.     // Берем из ссылки contact и отправляем в обработчик
  10.     $.post("getUser.php", currentUserData, function(data) {
  11.  
  12.         interval = setInterval(function() {
  13.             $.post("getUser.php", currentUserData, function(data) {
  14.                 $('#Mess').html(data);
  15.             });
  16.         }, 15000);
  17.  
  18.         //Возвращяем
  19.         $('#User').html(data);
  20.     });
  21.  
  22.     return false;
  23. });





О, чудо. Спасибо огромное, поменяв $('.infolink') на свой класс, стало работать... (ну вижу, что теперь и пользователи кликаются и их инфо отображается и вижу, что обновляется.) Спасибо еще раз, да и отдельное спасибо за интервалы, ибо тоже мучало. И да, посмотрев ваш код я обнаружил, что вы добавили переменную, которой присвоили замену первого знака, далее вы просто подставляете ее в пост и все... Хм я вродибы не замечал проблемы с подстановкой (?), в чем же была моя ошибка? В том, что данные надо было в переменную загнать и в пост вставлять? Еще раз ОГРОМНЕЙШЕЕ СПАСИБО!
87. IllusionMH - 03 Мая, 2012 - 22:39:31 - перейти к сообщению
Kreks, переменная нужна, чтобы хранить данные на последнего пользователя, ибо потом(в функции вызываемой по таймеру) нужно хорошо изощрятся, чтобы узнать какие данные передавать.
Kreks пишет:
добавили переменную, которой присвоили замену первого знака

Не заменаУлыбка Там берется кусок строки начинающийся с 1 позиции (индексы в строке с 0), т.е. все кроме ? в начале.
Проблема была в том, что если передается "?id=1&contact=contactID", то в массиве $_POST будет 2 элемента "?id" и "contact", так что элемента "id" нет.
88. Kreks - 03 Мая, 2012 - 22:46:55 - перейти к сообщению
IllusionMH пишет:
Kreks, переменная нужна, чтобы хранить данные на последнего пользователя, ибо потом(в функции вызываемой по таймеру) нужно хорошо изощрятся, чтобы узнать какие данные передавать.
Kreks пишет:
добавили переменную, которой присвоили замену первого знака

Не заменаУлыбка Там берется кусок строки начинающийся с 1 позиции (индексы в строке с 0), т.е. все кроме ? в начале.
Проблема была в том, что если передается "?id=1&contact=contactID", то в массиве $_POST будет 2 элемента "?id" и "contact", так что элемента "id" нет.


Спасибо, все ясно!
89. AgManiX - 07 Мая, 2012 - 00:38:01 - перейти к сообщению
Доброго времени суток!
Проблема такая: нужно подгрузить контент с использованием AJAX, перерыл кучу информации, но ничего подходящего так и не нашел, главное условие, чтобы stripslashes($rowMenu['title']) оставался текстом. вот код:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript" src="./jquery/jquery.js"></script>
  3. <script>  
  4.    function showContent(link) {  
  5.  
  6.        var cont = document.getElementById('content');  
  7.        var loading = document.getElementById('loading');  
  8.  
  9.        cont.innerHTML = loading.innerHTML;  
  10.  
  11.        var http = createRequestObject();  
  12.        if( http )  
  13.        {  
  14.            http.open('get', link);  
  15.            http.onreadystatechange = function ()  
  16.            {  
  17.                if(http.readyState == 4)  
  18.                {  
  19.                    cont.innerHTML = http.responseText;  
  20.                }  
  21.            }  
  22.            http.send(null);      
  23.        }  
  24.        else  
  25.        {  
  26.            document.location = link;  
  27.        }  
  28.    }  
  29.  
  30.    // создание ajax объекта  
  31.    function createRequestObject()  
  32.    {  
  33.        try { return new XMLHttpRequest() }  
  34.        catch(e)  
  35.        {  
  36.            try { return new ActiveXObject('Msxml2.XMLHTTP') }  
  37.            catch(e)  
  38.            {  
  39.                try { return new ActiveXObject('Microsoft.XMLHTTP') }  
  40.                catch(e) { return null; }  
  41.            }  
  42.        }  
  43.    }  
  44. </script>  
  45.  

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?
  3. // меню из БД
  4.        $resultMenu = mysql_query("SELECT * FROM pages ORDER BY id DESC", $link);
  5.        $rowMenu = mysql_fetch_array($resultMenu); // выведем первый пункт меню без точечки
  6.        echo '
  7.                 <div class="post">
  8.                 <h2 class="title"><a href="#" onclick="showContent("?id='.$rowMenu['id'].'")">'.stripslashes($rowMenu['title']).'</a></h2>';
  9.        while($rowMenu = mysql_fetch_array($resultMenu)){
  10.               echo '<h2 class="title"><a href="#" onclick="showContent("?id='.$rowMenu['id'].'")">'.stripslashes($rowMenu['title']).'</a></h2>';
  11.        }
  12. ?>
  13. <?//stripslashes() - Удаляет экранирование символов - а их мы понаставили в админке, когда загружали данные в базу с помощью функции mysql_real_escape_string()?>
  14. <div id="content" class="entry">
  15. <p><?=stripslashes($row['body']);?></p>
  16. </div>
  17. <div id="loading" style="display: none">  
  18.     Идет загрузка...  
  19.     </div>  
  20.  

Подскажите пожалуйста!
90. vitaliy_mad - 07 Мая, 2012 - 10:59:43 - перейти к сообщению
AgManiX, для начала рекомендую посмотреть в сторону JQuery. Более удобное и простое использования всего, в том числе и AJAX.
Далее что означает сие:
Цитата:
главное условие, чтобы stripslashes($rowMenu['title'])

Значение, возвращаемое функцией, должно остаться текстом? или само название функции и ее параметр должен выводиться без изменений?

 

Powered by ExBB FM 1.0 RC1