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 :: Версия для печати :: Загрузить ответ на запрос AJAX в нужный id
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Загрузить ответ на запрос AJAX в нужный id

Страниц (1): [1]
 

1. Yuriy - 23 Июня, 2007 - 12:36:24 - перейти к сообщению
Есть несколько объектов. Пусть это будут кнопки. Каждая имеет свой id по шаблону div_x. Нажимаю на одну из кнопок, отсылается запрос на сервер и ответ на запрос должен заменить кнопку, которую мы нажали. Что не получается. id нажатой кнопки я передать могу в функцию AJAX. Но ведь отслеживание того, что запрос выполнен, виден в функции:

PHP:
скопировать код в буфер обмена
  1. function processReqChange_9()
  2.     {
  3.     if(req9.readyState==4 && req9.status==200)
  4.     {
  5.              document.getElementById('div_x').innerHTML = req9.responseText;
  6.     }
  7.   }


а как мне в этой функции узнать id кнопки? То есть, мне надо передать как-то между функциями значение переменной. Несколько туманно объяснил… Вот пример:

PHP:
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4.  
  5. <script language="JavaScript">
  6.  
  7.     function processReqChange_9()
  8.     {
  9.     if(req9.readyState==4 && req9.status==200)
  10.     {
  11.              document.getElementById('div_'+arg2).innerHTML = req9.responseText;
  12.     }
  13.   }
  14.   function multi_call8(arg1,arg2)
  15.   {
  16.     alert(arg2);
  17.     if(window.XMLHttpRequest)
  18.     {
  19.       req9 = new XMLHttpRequest();
  20.       req9.onreadystatechange = processReqChange_9;
  21.       req9.open("GET",arg1, true);
  22.       req9.send(null);
  23.     } else if (window.ActiveXObject)
  24.     {
  25.       req9 = new ActiveXObject("Microsoft.XMLHTTP");
  26.       if (req9)
  27.       {
  28.         req9.onreadystatechange = processReqChange_9;
  29.         req9.open("GET",arg1, true);
  30.         req9.send();
  31.       }
  32.     }
  33.   }
  34.  
  35. </script>
  36. </head>
  37.  
  38. <body>
  39.  
  40. <input type="button" id="div_1" value="Button 1" onClick="multi_call8('edit.php?a=1','1');">
  41. <br/>
  42. <input type="button" id="div_2" value="Button 2" onClick="multi_call8('edit.php?a=2','2');">
  43.  
  44. </body>
  45. </html>
  46.  


Мне нужно, чтобы по нажатии на одну из кнопок изменилось её содержимое, согласно ответу на запрос. Как видно, id (точнее его часть) я отсылаю вторым параметром и в функции multi_call8 его получаю. А вот как бы его передать теперь в processReqChange_9?
2. UserID - 23 Июня, 2007 - 20:18:25 - перейти к сообщению
Извини, а что ты хочешь в кнопке поменять свойством innerHTML?
3. valenok - 23 Июня, 2007 - 21:28:57 - перейти к сообщению
можно передать на сервер и получить от сервера id кнопки
можно передавать в конечную функцию id своей кнопки
можно сохранить в переменную id кнопки а потом в конце читать эту перемнную
можно подумать или воспользоваться фантазией
можно ..
4. Yuriy - 23 Июня, 2007 - 21:46:41 - перейти к сообщению
valenok пишет:
можно передать на сервер и получить от сервера id кнопки


Можно с примером?

valenok пишет:
можно передавать в конечную функцию id своей кнопки


Я не просто так этот топик создал. Попробуйте! IE пишет: несоотвествие типов.

valenok пишет:
можно сохранить в переменную id кнопки а потом в конце читать эту перемнную


В каком конце?

valenok пишет:
можно подумать или воспользоваться фантазией
можно ..


Можно просто показать пример. Вы же знаток в этом деле. Что вам это стоит?

(Добавление)
UserID пишет:
Извини, а что ты хочешь в кнопке поменять свойством innerHTML?


Согласен. Просто не подумал.
5. UserID - 23 Июня, 2007 - 22:07:28 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4.  
  5. < script language="JavaScript">
  6. var active_id;
  7. function getID(ident)
  8. {
  9.     active_id = ident;
  10.     return active_id;
  11. }
  12.  
  13.     function processReqChange_9()
  14.     {
  15.     if(req9.readyState==4 && req9.status==200)
  16.     {
  17.             if(active_id == "div_1") {
  18.                       document.getElementById('div_'+arg2).innerHTML = req9.responseText;
  19.                 }
  20.     }
  21.   }
  22.   function multi_call8(arg1,arg2)
  23.   {
  24.     alert(arg2);
  25.     if(window.XMLHttpRequest)
  26.     {
  27.       req9 = new XMLHttpRequest();
  28.       req9.onreadystatechange = processReqChange_9;
  29.       req9.open("GET",arg1, true);
  30.       req9.send(null);
  31.     } else if (window.ActiveXObject)
  32.     {
  33.       req9 = new ActiveXObject("Microsoft.XMLHTTP");
  34.       if (req9)
  35.       {
  36.         req9.onreadystatechange = processReqChange_9;
  37.         req9.open("GET",arg1, true);
  38.         req9.send();
  39.       }
  40.     }
  41.   }
  42.  
  43. </script>
  44. </head>
  45.  
  46. <body>
  47.  
  48. <input type="button" id="div_1" value="Button 1" onClick="getID(this.id); multi_call8('edit.php?a=1','1');">
  49. <br/>
  50. <input type="button" id="div_2" value="Button 2" onClick="getID(this.id); multi_call8('edit.php?a=2','2');">
  51.  
  52. </body>
  53. </html>
  54.  


Писал на вскидку. Работает или нет, не знаю. Вроде должно. Пробуй.
6. Yuriy - 23 Июня, 2007 - 22:17:07 - перейти к сообщению
UserID, вот спасибо вам! Действительно, Магистр... ;)
7. valenok - 23 Июня, 2007 - 22:42:24 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP  
  3.  
  4. if(isset($_GET['a'])) {
  5.         if(isset($_GET['div_id'])) echo $_GET['div_id']."|separator|";
  6.         die("Your var: ".$_GET['a']);
  7. }
  8.  
  9.  
  10.  
  11.  
  12. ?>
  13.  
  14.  
  15.  
  16. <div id='div_1' onClick="javascript:multi_call8('<?PHP echo $_SERVER['PHP_SELF'];?>?a=1&div_id='+this.id);">
  17. можно передать на сервер и получить от сервера id кнопки</div>
  18.  
  19.  
  20. <div id='div_3' onClick="javascript: someid = this.id; multi_call8('<?PHP echo $_SERVER['PHP_SELF'];?>?a=1'); ">
  21. можно сохранить в переменную id кнопки а потом в конце читать эту перемнную</div>
  22.  
  23. <div id='div_4' onClick="javascript:alert('Запомните это: '+this.id);multi_call8('a.php?a=1');">
  24. можно подумать или воспользоваться фантазией</div>
  25.  
  26. <div id='div_5' onClick="javascript:window.close()">
  27. можно .. </div>
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. <script language="JavaScript">
  36.  
  37. var someid;
  38.  
  39.      function processReqChange_9()  {
  40.            if(req9.readyState==4 && req9.status==200)  {
  41.                                        
  42.                                 if(req9.responseText.indexOf('|separator|')>0)
  43.                                                 var ret = req9.responseText.split('|separator|');
  44.                                         else { var ret = new Array(); ret[0] = someid;  ret[1] = req9.responseText;}
  45.                                         if(!ret[0]) ret[0] = prompt('Теперь введите то что вы запомнили','');
  46.                                         document.getElementById(ret[0]).innerHTML = ret[1];
  47.                                
  48.                          }
  49.      
  50.          }
  51.  
  52.  
  53.  
  54.    function multi_call8(arg1)  
  55.    {
  56.                        
  57.                          if(window.XMLHttpRequest)  
  58.                         {
  59.                                 req9 = new XMLHttpRequest();
  60.                                  req9.onreadystatechange = processReqChange_9;
  61.                                 req9.open("GET",arg1, true);
  62.                                 req9.send(null);
  63.                         }
  64.                         else if (window.ActiveXObject)  
  65.                         {
  66.                                 req9 = new ActiveXObject("Microsoft.XMLHTTP");
  67.                                 if (req9)  
  68.                                 {
  69.                                         req9.onreadystatechange = processReqChange_9;
  70.                                         req9.open("GET",arg1, true);
  71.                                         req9.send();
  72.                                 }
  73.                         }
  74.  
  75.  
  76.    }
  77.    
  78.  
  79.  
  80.  
  81.  </script>
  82.  </head>
  83.  
  84.  <body>
  85.  
  86.  <input type="button" id="btn" value="Button 1" onClick="multi_call8('<?PHP echo $_SERVER['PHP_SELF'];?>.php?a=1&div_id=1','1');">
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95. <?
  96.  
  97.  
  98.  
  99.  
  100. ?>
  101.  
  102.  
  103.  
  104.  
  105.  

 

Powered by ExBB FM 1.0 RC1