Загрузка фрейма с помощью ajax - PullRequest
0 голосов
/ 07 июля 2011

У меня есть страница с PHP-скриптом, который отнимает много времени.Кто-то порекомендовал мне вызвать этот PHP-скрипт с помощью ajax.Теперь скрипт загружается следующим образом.

 <div id="content-body" style="margin-top: 0px;"><a name="top"></a>
   <h1>
     <iframe src="calendar/index.php?cP=2" style="position: absolute; top: 0px; padding: 0px 0px 0px 0px; border: 1px solid #404040;" width="780px" height="691px"></iframe>
   </h1>  
 </div> <!-- End CONTENT-BODY div -->

Как изменить код для загрузки страницы index.php с помощью ajax?

Я думаю, что мне нужно иметьвызов функции javascript в функции загрузки iframe.Таким образом, HTML может выглядеть следующим образом.

<iframe id="litcal" onload="LoadCalendar();"></iframe>

Функция ajax может выглядеть следующим образом.

  <script type="text/javascript">
    var http = false;

    if(navigator.appName == "Microsoft Internet Explorer") {
      http = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
      http = new XMLHttpRequest();
    }

    function LoadCalendar() {
      http.abort();
      http.open("GET", "calendar/index.php?cP=2", true);
      http.onreadystatechange=function() {
        if(http.readyState == 4) {
          document.getElementById('litcal').src = http.responseText;
        }
      }
      http.send(null);
    }
  </script>

Я действительно не знаю ajax.Поэтому я хочу знать, является ли указанный код правильным для загрузки iframe.

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Выполнение вашего кода через AJAX-запрос волшебным образом не заставит его работать быстрее. Медленный код все равно будет медленным, независимо от метода, которым он вызывается.

AJAX может использоваться для визуализации части документа HTML пользователю как можно скорее, при необходимости загружая дополнительные части. Успешная реализация AJAX обычно требует, по крайней мере, некоторого переписывания вашего кода.

Вам нужно будет определить, какие части страницы вы хотите отобразить пользователю изначально, и отправить их с начальным запросом страницы. Затем вы можете поместить медленные или менее важные части вашего кода в скрипт PHP, который будет вызываться через AJAX по мере необходимости. Ваш скрипт должен выводить данные, пригодные для вставки в более крупный HTML-документ.

0 голосов
/ 08 июля 2011

Проблема заключалась в том, что скрипт PHP не возвращал URL. Таким образом, http.responseText не может быть назначен src. Переключение на div и назначение http.responsetext для div innerHTML работали. Сценарий, который работает так:

<script type="text/javascript">
    var http = false;
    if(navigator.appName == "Microsoft Internet Explorer") {
      http = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
      http = new XMLHttpRequest();
    }
    function LoadCalendar() {
      http.abort();
      http.open("GET", "luxcal/index.php?cP=2", true);
      http.onreadystatechange=function() {
        if(http.readyState == 4) {
          /* document.getElementById('litcal').src = http.responseText; */
          document.getElementById('litcal').innerHTML = http.responseText;
        }
      }
      http.send(null);
    }
</script>

HTML это.

<body onload="appendTitle('Calendar');">

<div id="content-body"><a name="top"></a>
  <h1>
    <!-- iframe src="luxcal/index.php?cP=41" style="padding: 0px 0px 0px 0px; border: 1px solid #404040;" width="690px" -->
    <!-- iframe id="litcal" onload="LoadCalendar();" style="padding: 0px 0px 0px 0px; border: 1px solid #404040;" width="690px" 
height="691px"> <div id="litdiv"> </div></iframe -->
    <div id="litcal" style="padding: 0px 0px 0px 0px; border: 1px solid #404040; width: 690px; 
height: 691px;"> </div>

<script type="text/javascript">
    LoadCalendar();
</script>
  </h1>  
</div> <!-- End CONTENT-BODY div -->

</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...