За последние 24 часа нас посетили 20083 программиста и 1715 роботов. Сейчас ищут 1398 программистов ...

Помогите с передачей данных без перезагрузки

Тема в разделе "JavaScript и AJAX", создана пользователем Necronom, 22 мар 2010.

  1. Necronom

    Necronom Активный пользователь

    С нами с:
    22 мар 2010
    Сообщения:
    1
    Симпатии:
    0
    Добрый вечер!

    Хочу использовать на сайте передачу данных без перезагрузки страницы (Ajax). Нашел множество примеров реализации этого и все работают в теле родительского документа. Но! Мне нужно возвратить данные скрипта в открытое всплывающее окно (plugin facebox). В моем случае данные после запроса передаются лишь после повторного открытия такого окошка, при том что тот же самый код работает на ура в теле основного документа. Вероятно я чего-то недопонимаю, прошу Вашей помощи с реализацией такого взаимодействия.

    Вот код документа с модальным окном:
    Код (Text):
    1.  
    2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3. <html xmlns="http://www.w3.org/1999/xhtml">
    4. ...
    5. //jquery плагин
    6. <script type="text/javascript" src="./fancybox/jquery-1.4.2.min.js"></script>
    7. ...
    8. <link href="js/facebox/facebox.css" media="screen" rel="stylesheet" type="text/css"/>
    9. <script src="js/facebox/facebox.js" type="text/javascript"></script>
    10. // инициализация facebox плагина (всплывающего окошка)
    11.   <script type="text/javascript">
    12.     jQuery(document).ready(function($) {
    13.       $('a[rel*=facebox]').facebox({
    14.  
    15.       })
    16.     })
    17.   </script>
    18. ...
    19. <body>
    20. ...
    21. //Скрипт реализующий тихую передачу данных
    22. <script type="text/javascript">
    23. function showContent(link, contentid)
    24. {
    25. var cont=document.getElementById(contentid);
    26. var http=createRequestObject();
    27. if(http)
    28.         {
    29.         http.open('get', link);
    30.         http.onreadystatechange = function ()
    31.                 {
    32.                 if(http.readyState == 4)
    33.                         {
    34.                         cont.innerHTML = http.responseText;
    35.                         }
    36.                 }
    37.                 http.send(null);
    38.         }
    39.         else
    40.         {
    41.         document.location = link;
    42.         }
    43. }
    44.  
    45. function createRequestObject()
    46. {
    47. try {return new XMLHttpRequest()}
    48. catch(e)
    49.         {
    50.         try {return new ActiveXObject('Msxml2.XMLHTTP')}
    51.         catch(e)
    52.                 {
    53.                 try {return new ActiveXObject('Microsoft.XMLHTTP')}
    54.                 catch(e) {return null; }
    55.                 }
    56.         }
    57. }
    58.  
    59. </script>
    60. <?
    61. //код формы во всплывающем окошке
    62. <form action='mail.php"' method='post'><textarea id='error' name='error' type='text'></textarea></form><a href='#' onclick=\"showContent('mail.php?type=".$_GET[act]."&number=".$record[2]."&subj=".$_POST[error]."','contents_".$record[2]."')\">Отправить</a><div id='contents_".$record[2]."'></div>
    63. ?>
    64. ...
    Вот код скрипта к которому обращаюсь:
    Код (Text):
    1.  
    2. //исполняемый скрипт
    3. <?php
    4. print $_GET[type]."<br>";
    5. print $_GET[number]."<br>";
    6. print $_GET[subj]."<br>";
    7. ?>
    При первом вызове всплывающего окна с формой после отправки данных ничего не происходит:
    [​IMG]

    При повторном вызове данные уже в окне:
    [​IMG]