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

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

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

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
  2. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    я знаю как это называется.. я прошу показать пример как это организовать
     
  3. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    AJAX. Он состоит из 2 частей: Java-скрипта, который будет выполняться в клиентском браузере и непосредственно отображать данные, и скрипта, непосредственно передающего эти данные. В твоём случае второй скрипт скорее всего будет на РНР. Как пользоваться AJAX'ом гугли - статей по этой технологии как собак нерезанных. Сам недолюбливаю, поэтому стараюсь не юзать.
     
  4. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Как взять элемент по классу, а потом применить метод .click() к нему ?

    например есть теги

    PHP:
    <div class="row"fsdfsdf</div>

    <
    div class="row"jhfghf</div>

    <
    div class="row"рапр рапр</div>

    <
    div class="row"парапрапр</div>

    <
    div class="row"gdgdfgdfg</div>

    нужно скриптом кликнуть по каждому.
     
  5. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    PHP:
    <script language="Javascript">
    function 
    chek()
    {
       var 
    class_name 'row';
       var 
    elements document.getElementsByTagName('div')
       
       for (
    0elements.lengthi++)
       {
         if (
    elements[i].className == class_name)
         {
           
    //Функция клика для elements[i]
         
    }
       }
    }
    </script>
     
    2 people like this.
  6. ilor

    ilor New Member

    Joined:
    8 Jan 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Только что начал осваивать ajax. Но никак не получается исправить ошибку:
    Code:
    <html>
    <head>
      <title></title>
    
      <script language="JavaScript" type="text/JavaScript">
      	var request = null;
      	function createRequest(){
      		try{
      	    	request = new XMLHttpRequest();
      	 	} catch(trymicrosoft){
      	    	try{
      	    		request = new ActiveXObject("Msxm12.XMLHTTP");
      	    	} catch (othermicrosoft){
      	    		try{
      	    			request = new ActiveXObject("Microsoft.XMLHTTP");
      	    		} catch(failed){
      	    			request = null;
      	    		}
      	    	}
      	    }
      	    if(request == null)
      	    	alert("Ошибка при создании объекта!");
      	}
      	function getNumber(){
      		createRequest();
      		var url = "getNumber.php";
      		request.open("GET", url, true);
      		request.onreadystatechange = updatePage;
      		request.send(null);
      	}
      	function updatePage(){
      		if(request.readyState == 4){
    	  		var newTotal = request.responseText;
    	  		var numEl = document.getElementById("number");
    	  		replaceText(numEl, newTotal);
      		}
      	}
      </script>
    </head>
    
    <body>
    	<h2>Число: <span id="number"></span></h2>
    	<form method="GET">
    		<input value="Обновить" type="button" onClick="getNumber();">
    	</form>
    </body>
    </html>
    
    getNumber.php
    Code:
    <?php echo rand(1,9); ?>
    
    Число получаю, а вставляться оно не хочет в <span id="number"></span>. Останавливается на это строке - replaceText(numEl, newTotal);
    Помогите пожалуйста!
     
    #1526 ilor, 19 Jun 2009
    Last edited: 19 Jun 2009
  7. m0nsieur

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

    Joined:
    8 Apr 2008
    Messages:
    223
    Likes Received:
    69
    Reputations:
    10
    замени свою строку - replaceText(numEl, newTotal); я что-то такой функции не нашел(да и firebug говорит, что она undefined)
    на вот это document.getElementById("number").innerHTML = newTotal;
     
  8. marlen

    marlen New Member

    Joined:
    5 Apr 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    Всем привет!
    Есть такой код:
    он вставляет смайлик в поле у которого <textarea name="post_text">
    Как сделать так, чтобы он работал не только с одним "post_text" но ещё с "post_text2" и "post_text3" ?
    Спасибо!
    С меня +
     
  9. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Code:
    <script language="javascript">
    function insertext(smile)
    {
      for (i = 0; i < 4; i++)
      {
        if (i == 0) {name = 'post_text';} else {name = 'post_text_' + i;}
    
        window.opener.document.getElementById(name).value += ' ' + smile + ' ';
      }
    }
    </script>
    
     
    #1529 FireFenix, 21 Jun 2009
    Last edited: 21 Jun 2009
  10. marlen

    marlen New Member

    Joined:
    5 Apr 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    FireFenix, спасибо, но я не подумал, что можно будет таким оброзом решить пробему...
    у меня не "post_text1", "post_text2", "post_text3" а "post_text" и "comments"
    Напишите пожалуйста код где только "post_text" и "comments"

    Спасибо!
     
  11. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Code:
    <script language="javascript">
    function insertext(smile)
    {
      //Присваиваем elem_text объект с id="post_text"
      var elem_text = window.opener.document.getElementById('post_text');
      //Добавдяем к значению elem_text текст смайла
      elem_text.value += ' ' + smile + ' ';
    
      //По аналогии с первым
      var elem_comm = window.opener.document.getElementById('comments');
      elem_comm.value += ' ' + smile + ' ';
    }
    </script>
    
     
  12. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Тогда уж так.
    Code:
    function addText(id, smile)
    {
      opener.document.getElementById(id).value += ' ' + smile + ' ';
    };
    
    addText('post_text', ':)');
    addText('comments',  '=/');
     
  13. marlen

    marlen New Member

    Joined:
    5 Apr 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    FireFenix, Ваш пример работает только с полем "post_text" в поле с "comments" он не вставляет смайл.

    astrologer, Ваш пример не работает ни с одним полем.
     
  14. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    В примере astrologer лишнее "opener" или недорписанное "window" :)

    В обоих примерах используется функция getElementById("name"); где name - Id нужного тега (<input id="name" type="text">) => смотрите чтобы Id совпадал с Id тега, а так же Id было единственное на весь документ
    Если всёравно неработает - выложите html, что вы заполняете
     
  15. marlen

    marlen New Member

    Joined:
    5 Apr 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    У меня два поля
    Первое:
    <textarea name="comments" id="comments" >

    Второе:
    <textarea id="post_text" name="post_text" >

    Ваш пример вставляет в <textarea id="post_text" name="post_text" > а в <textarea name="comments" id="comments" > не хочет.

    На странице совподений id нет
     
  16. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    я так думаю, у marlen меню/кнопка находится во всплывающем окне. Это следует из самого первого приведенного им(или ей) кода.
    А здесь могла бы быть длинная история о том, как происходит scope chain lookup. Но её не будет, лучше почитайте сами ecma-262.
     
  17. marlen

    marlen New Member

    Joined:
    5 Apr 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    да, кнопка находится во всплывающем окне.
     
  18. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Вот всё работает
    1.html
    Code:
    <script language="javascript">
    
    function show()
    {
      window_insert = window.open("2.html", 'window_insert', 'toolbar=no, location=no, directories=no, menubar=no, scrollbars=yes, resizable=no,  status=no, height=400, width=600');  
    }
    
    </script>
    
    <textarea name="comments" id="comments">qwerty</textarea>
    <textarea id="post_text" name="post_text">asdfg</textarea>
    <br>
    <a href="javascript:show()">Show</a>
    
    2.html
    Code:
    <script language="javascript">
    
    function add()
    {
      smile = ':)';
    
      var elem_text = window.opener.document.getElementById('post_text');
      elem_text.value += ' ' + smile + ' ';
      
      var elem_comm = window.opener.document.getElementById('comments');
      elem_comm.value += ' ' + smile + ' ';
    }
    
    </script>
    
    <a href="javascript:add()">Add</a>
    
     
  19. Vlad&slav

    Vlad&slav Member

    Joined:
    1 Jan 2009
    Messages:
    207
    Likes Received:
    41
    Reputations:
    9
    PHP:
    <script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"></script>
    <script>
    $(document).ready(function(){
            $.ajax({
            type: "POST",
            url: "qwerty.php",
        asynch: true,
        success: function (data){if (data=='ERROR'){document.location('http://бла_бла_бла');}}
        });
    });
    </script>
    Скрипт находится на html странице, и если получает от скрипта qwerty.php ERROR то происходит редирект на http://бла_бла_бла , а если OK то продолжает работу (на странице ничего не изменяется.
    Он почему-то не работает , и при "ERROR" редиректа не происходит =( Исправьте плиз.
     
  20. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Как вариант - проверьте соответствие кодировок и посмотрите, что возвращает запрос
     
Thread Status:
Not open for further replies.