[JavaScript, AJAX] Задай вопрос, получи ответ

Discussion in 'PHP' started by banned, 9 Jun 2007.

Thread Status:
Not open for further replies.
  1. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Если ты имеешь ввиду то, что получается в PHP при использовании мультикурла - то такая "псевдо-многопоточность" (чуть более совершенная) присутствует в среде браузерного JS по-умолчанию, это просто сама суть его модели исполнения
     
  2. lokus

    lokus New Member

    Joined:
    8 Sep 2009
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Мне надо чтобы сначала подменюшки были скрыты,
    вот код jq:
    HTML:
    $(document).ready(function(){
     $('.topmenu ul li').hover(
            function() {
                $(this).addClass("active");
               $(this).find('ul').stop(true, true); // останавливаем всю текущую анимацию
               $(this).find('ul').slideDown();
            },
            function() {
              $(this).removeClass("active");
               $(this).find('ul').slideUp('fast');
           }
        );
    });
    и вот хтмл код:
    HTML:
    <div class="topmenu">
       <ul>
     <li><a href="#" title="Меню 1">Меню 1</a>
     <ul>
    <li><a href="#" title="Элемент 1.1">Элемент 1.1</a></li>
     <li><a href="#" title="Элемент 1.2">Элемент 1.2</a></li>
    <li><a href="#" title="Элемент 1.3">Элемент 1.3</a></li>
               </ul>
            </li>
           <li><a href="#" title="Меню 2">Меню 2</a>
                <ul>
                 <li><a href="#" title="Элемент 2.1">Элемент 2.1</a></li>
                   <li><a href="#" title="Элемент 2.2">Элемент 2.2</a></li>
                   <li><a href="#" title="Элемент 2.3">Элемент 2.3</a></li>
                </ul>
           </li>
           <li><a href="#" title="Меню 3">Меню 3</a>
              <ul>
                   <li><a href="#" title="Элемент 3.1">Элемент 3.1</a></li>
                 <li><a href="#" title="Элемент 3.2">Элемент 3.2</a></li>
     <li><a href="#" title="Элемент 3.3">Элемент 3.3</a></li>
    </ul>
    </li>
    </ul>
    </div>
     
  3. diGriz

    diGriz Elder - Старейшина

    Joined:
    11 Oct 2006
    Messages:
    138
    Likes Received:
    82
    Reputations:
    6
    Добавь перед:

    Code:
    $('.topmenu ul li').hover
    Эти 2 строчки:

    Code:
    $('.topmenu ul').hide(); 
    $('.topmenu ul:first').show();
    
     
  4. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
    Вот такой вопрос....
    Как можно убрать загрузку с сайта (как в odnoklasniki.ru)
    Чтобы не показывало что сайт сейчас грузится
     
  5. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Простейшая голосовалка

    Помогите с голосовалкой :)
    Есть код:
    HTML:
    Голсовать:   <a href="#nul" onclick=""><img src="img/yes.gif" width="19" height="19" alt="Да" /></a> <a href="#nul" onclick=""><img src="img/no.gif" width="19" height="19" alt="Нет" /></a><br />
    и есть табличка в базе данных:
    Code:
    CREATE TABLE `rating` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `rating` int(10) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
    Задача сделать так, чтобы при нажатии на первую картинку, в базе, в столбце "rating" число прибавлялось на 1 без перезагрузки страницы :)
    Помогите плиз разобраться, второй день сижу :( :confused:
     
  6. L.A.V

    L.A.V Member

    Joined:
    1 Sep 2009
    Messages:
    10
    Likes Received:
    10
    Reputations:
    0
    все что делается без перезагрузки делается JS.
    обясню только смысл, тк времени нет

    (накидаю кусков файлов, а там разберешься)
    файл ява скрипта выглядит премерно так

    HTML:
    function process()
    {
      // proceed only if the xmlHttp object isn't busy
      if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
      {
        // retrieve the name typed by the user on the form
        name = encodeURIComponent(document.getElementById("myName").value);
        // execute the quickstart.php page from the server
        xmlHttp.open("GET", "quickstart.php?name=" + name, true);  
        // define the method to handle server responses
        xmlHttp.onreadystatechange = handleServerResponse;
        // make the server request
        xmlHttp.send(null);
      }
    quickstart.php это файл, где будет обработчик (там сделаешь просто изменение записи в rating )
    на картинках <a href="#nul" onclick="process()">
    и в самом начале файла ссылку на файл ява скрипта. надеюсь понятно все обьяснил. если что пиши, но буду за компом только вечером
     
    1 person likes this.
  7. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Пишу в хэде:
    HTML:
    <script language="JavaScript">
    function process(){
      // proceed only if the xmlHttp object isn't busy
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
      {
        // retrieve the name typed by the user on the form
        name = encodeURIComponent(document.getElementById("yes").value);
        // execute the quickstart.php page from the server
        xmlHttp.open("GET", "rating.php?ch=543&name=" + name, true);  
        // define the method to handle server responses
        xmlHttp.onreadystatechange = handleServerResponse;
        // make the server request
        xmlHttp.send(null);
    	alert("rating.php?ch=543&name=" + name);
      }
    }
    </script>
    тело:
    HTML:
    <a href="#nul" onclick="process()"><img id="yes" src="img/yes.gif" width="19" height="19" alt="Да" align="absmiddle" style="margin-right:10px;" /></a> <a href="#nul" onclick="process()"><img id="no" src="img/no.gif" width="19" height="19" alt="Нет" align="absmiddle" /></a>
    Файл rating.php:
    PHP:
    <?php
    if($ch){
        if(
    name=="yes"){
            
    $result mysql_query ("UPDATE `bd` SET `rating`= (rating+1) WHERE `id`='$ch'");
        }
        if(
    name=="no"){
            
    $result mysql_query ("UPDATE `bd` SET `rating`= (rating-1) WHERE `id`='$ch'");
        }
    }
    ?>
    но при нажатии даже адерт не авскакивает. Почему не работает? :confused: :confused: :confused:
     
  8. FeraS

    FeraS Elder - Старейшина

    Joined:
    19 Jan 2007
    Messages:
    555
    Likes Received:
    420
    Reputations:
    76
    mff
    У тега img нет атрибута value
     
  9. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    FeraS, ага, но я пробывал и другие, там ширину передать. Что то нитак всёравно.
     
  10. FeraS

    FeraS Elder - Старейшина

    Joined:
    19 Jan 2007
    Messages:
    555
    Likes Received:
    420
    Reputations:
    76
    mff

    Code:
    <script type="text/javascript">
    function process() {
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
     name = encodeURIComponent(document.getElementById('yes').title);
     xmlHttp.open("GET", "rating.php?ch=543&name=" + name, true);  
     xmlHttp.onreadystatechange = handleServerResponse;
     xmlHttp.send(null);
     alert("rating.php?ch=543&name=" + name);
      }
    }
    </script>
    
    Code:
    <a href="#nul" onclick="process()"><img id="yes" title="yes" src="img/yes.gif" width="19" height="19" alt="Да" align="absmiddle" style="margin-right:10px;" /></a> <a href="#nul" onclick="process()"><img id="no" title="no" src="img/no.gif" width="19" height="19" alt="Нет" align="absmiddle" /></a>
    
    попробуй
     
    #1830 FeraS, 22 Sep 2009
    Last edited: 22 Sep 2009
    1 person likes this.
  11. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Code:
    <script>
    function SetEnd (TB) {
       if (TB.createTextRange){
         var FieldRange = TB.createTextRange();
         FieldRange.moveStart('character', TB.value.length);
         FieldRange.collapse();
         FieldRange.select();
       }
    }
    </script>
    
    <form name="form1" action="somepage.asp" method="post">
    <input type="text" name="city" value="lol" onfocus="SetEnd(this)">
    <input type="submit" value="Submit">
    </form>
    <script language="JavaScript"> document.forms[0].city.focus(); </script>
    
     
    1 person likes this.
  12. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Не, неработает! Нет алерта :(((
     
  13. L.A.V

    L.A.V Member

    Joined:
    1 Sep 2009
    Messages:
    10
    Likes Received:
    10
    Reputations:
    0
    у тебя же к процесса, то и функции надо тоже 2 сделать:
    1 передает через гет наме=йес
    2 передает через гет наме=но

    и еще функции не обьявил в обработчике
    те вместо name надо $_GET[name]
    PHP:
    <?php
    if($ch){
        if(
    $_GET[name]=="yes"){
            
    $result mysql_query ("UPDATE `bd` SET `rating`= (rating+1) WHERE `id`='$ch'");
        }
        if(
    $_GET[name]=="no"){
            
    $result mysql_query ("UPDATE `bd` SET `rating`= (rating-1) WHERE `id`='$ch'");
        }
    }
    ?>
     
    1 person likes this.
  14. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    L.A.V Пишет что объект xmlHttp не определен...
    Нашел функцию:
    HTML:
    function getXmlHttp(){
      var xmlhttp;
      try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
          xmlhttp = false;
        }
      }
      if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
      }
      return xmlhttp;
    }
    пишу:
    HTML:
    var xmlhttp = getXmlHttp()
    и ни фига :(

    http://xmlhttprequest.ru/#start

    :confused: :confused: :confused:
     
  15. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    L.A.V спасибо, всё заработало!
     
  16. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    ку
    мне нужно чтоб выводилась например цифра 1, потм всесто нее 2. итд. числа берутся из пхп скрипта.
    мне человек один дал код но он не пашет скажит что не так.
    PHP:
     ob_implicit_flush ();
    echo 
    '<div id=do></div>';
    echo 
    '<script>function d(str){document.getElementById("do").innerHTML = str;}</script>';

    ob_flush ();
    flush ();
    for(
    $i=0;$i<1000;$i++) {  
    echo 
    "<script>d(" $i ");</script>";
    ob_flush ();
    flush ();
    }




     
  17. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Это требуется именно с серверной стороны вывод реализовать, с помощью PHP? То что ты привел - в некоторой степени треш, и легче такое сделать с помощью ajax тогда уж.
    А если PHP не требуется задействовать, то и вовсе локально JavaScript'ом.
     
  18. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    пхп будет отдавать числа. например 1 ,5, 5555 и они должны появлятся на месте пердыдкшего
     
  19. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    думаю оно должно работать так
    PHP:
    <?php

    echo '<script>
            function show(count, del)
            {          
              document.getElementById("show").innerHTML = count;
            }        
          </script>'
    ;
          
    echo 
    '<body>';

    echo 
    '<div id="show">1</div>';

    for(
    $i 0$i 1000$i++)
    {  
      
    ob_start();
      
      echo 
    '<script>show(' $i ');</script>';
      
      
    ob_flush ();
      
    flush ();
      
    ob_end_flush();
      
      
    usleep(5000); //типа скорость показа
    }

    ?>
    но остаётся проблема во флуде
    Code:
    <script>show(1);</script>
     
  20. Linuxoid

    Linuxoid Elder - Старейшина

    Joined:
    13 Feb 2007
    Messages:
    200
    Likes Received:
    28
    Reputations:
    0
    Долго думал в какую тему задать вопрос, решил сюда.
    Есть замечательный сервис dot.tk, который щедро раздает домены 2 уровня .tk на халяву. Но грузится это все дело в фрейме.
    Ситуация: Домен example.com использует сервис dot.tk и имеет там домен example.tk. После ввода в браузере example.tk попадаем на example.com, но как бы мы не перемещались по сайту, все будет происходить внутри фрейма. То есть в адресной строке браузера так и будет http://example.tk/, даже если мы перейдем на http://example.com/?n=1 внутри фрейма.
    Необходимо сделать, что бы сайт сразу после загрузки "вылазил" из фрейма и в том же окне открывался по реальному адресу. То есть вводим в браузере example.tk и нас тут же перекидывает на http://example.com/. Долго думал как реализовать, поступило предложение по поводу js. Сам я в нем вообще не разбираюсь, только вот планирую начать изучать.
    Какие будут предложения? Как реализовать?
    З.Ы. Вроде все правильно написал как необходимо сделать. Если что-то напутал - извините, без малого 2 суток не спал. :)
     
Thread Status:
Not open for further replies.