1. PHP / Говнокод #8536

    +151

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    (1)Сначала:
    <!DOCTYPE html>
    <html>
    <head>
    <script type='text/javascript' src='./Plugins/jQuery/jquery.min.js'></script>
    
        <script>
    	function rezlt(a,b,c) {
                $.ajax({  
                    url: "test.php",
    				type:	'POST',
    				data: 'a='+a+'&b='+b+'&c='+c+'',				
                    cache: false,				
                    success: function(html){  
                        $(".content").html(html)  ;
                    }  
                });
         }
    
        </script>  
    </head>
    <body>
    //тут уже результат работы, строк свыше 1000
    <span class="content" onclick="rezlt(1,2,3)" >answer1</span><br/>
    <span class="content" onclick="rezlt(4,5,6)" >answer2</span><br/>
    <span class="content" onclick="rezlt(7,8,9)" >answer3</span><br/>
    </body>  
    </html>
    
    
    (2)Решение:
    <!DOCTYPE html>
    <html>
    <head>
    <script type='text/javascript' src='./Plugins/jQuery/jquery.min.js'></script>
    
        <script>
    	function rezlt(a,b,c,nid) {
                $.ajax({  
                    url: "test.php",
    				type:	'POST',
    				data: 'a='+a+'&b='+b+'&c='+c+'',				
                    cache: false,				
                    success: function(html){  
                        $(nid).html(html)  ;
                    }  
                });
         }
    
        </script>  
    </head>
    <body>
    //тут уже результат работы, строк свыше 1000
    <span id="content" onclick="rezlt(1,2,3,seq1)" ><div id="seq1">answer1</div></span><br/>
    <span id="content" onclick="rezlt(4,5,6,seq2)" ><div id="seq2">answer2</div></span><br/>
    <span id="content" onclick="rezlt(7,8,9,seq3)" ><div id="seq3">answer3</div></span><br/>
    </body>  
    </html>

    Уже второй день бъюсь над проблемой.
    Задача: Перегружать всю страницу не надо. По клику по объекту content отправляются данные на test.php
    и некий результат присваивается объекту content, на который был совершен клик. Сначала было вот так - (1) но тут, присвоение производится сразу всем объектам content

    Чую, что решение(2) говно, учитывая что объектов content будет свыше 1000.

    Запостил: truedizzy, 16 Ноября 2011

    Комментарии (11) RSS

    • Use "this", dizzy. And "addEventListener" || "attachEvent"
      Ответить
    • dizzy in the wonderland
      Ответить
    • 2dizzy:

      <span class="content"><div id="seq1">(seq1 - not loaded)</div></span>
      <span class="content"><div id="seq2">(seq2 - not loaded)</div></span>
      <span class="content"><div id="seq3">(seq3 - not loaded)</div></span>

      и

      $('.content div').click(function() {alert($(this).attr('id'));}); - получить нужный тебе id

      Домашнее задание - понять, как оно работает. Тогда для тебя не всё потеряно.

      P.S. Не издеваюсь над страждущим из-за уважения к доктайпу ;) А то достали всякие профессиАналы, пихающие доктайп XHTML где ни попадя.
      Ответить
      • Огромное спасибо!!! Может выглядит кривовато, но красивее чем оба варианта в посте.
        <!DOCTYPE html>
        <html>
        <head>
        <script type='text/javascript' src='./Plugins/jQuery/jquery.min.js'></script>
        <script>
        $(document).ready(function(){
        $('.content').click(function() {
        nid=$(this);
        });
        });
        function rezlt(a,b,c) {
        $.ajax({
        url: "test.php",
        type: 'POST',
        data: 'a='+a+'&b='+b+'&c='+c+'',
        cache: false,
        success: function(html){
        ($(nid).html(html)) ;
        }
        });
        }
        </script>
        </head>
        <style type="text/css">
        </style>
        <body>
        <div class="content" onclick="rezlt(1,2,3)">answer1</div><br/>
        <div class="content" onclick="rezlt(4,5,6)">answer2</div><br/>
        <div class="content" onclick="rezlt(7,8,9)">answer3</div><br/>
        </body>
        </html>
        Ответить
    • извините, я дверью ошибся.
      Ответить
    • За 20 баксов починю твой код
      каждому!
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий