Как мне показать печать с помощью AJAX / jQuery? - PullRequest
3 голосов
/ 02 мая 2010

Так что я пытаюсь понять всю эту вещь AJAX / jQuery. Прямо сейчас, когда я запускаю этот PHP-скрипт в одиночку, мне придется подождать и посмотреть, как вращается колесо, пока оно не закончится с циклом, а затем оно загрузится.

while ( $row = mysql_fetch_array($res) ) {
    postcode_to_storm( $row['Test'] );

    $dom = new DOMDocument();
    @$dom->loadHTML($result);
    $xPath = new DOMXPath($dom);

    $failInvite = 'Rejected';
    $findFalse = strpos($result, $failInvite);

    if ( $findFalse == true ) {
        $array[$i] = $row['Test'];
        $i++;
        echo $array[$i]};
    } 

}

Теперь, как мне использовать AJAX / jQuery, чтобы показывать echo $array[$i]}; каждый раз, когда он вызывается вместо ожидания завершения всего процесса?

Ответы [ 3 ]

3 голосов
/ 02 мая 2010

Принцип работы AJAX заключается в том, что при первом запросе вы пишете базовый HTML-код вашей веб-страницы, включая некоторый JavaScript, который обращается к серверу и запрашивает дополнительные данные.В зависимости от того, как вы планируете отправлять ваши данные, он может сделать один или несколько запросов после визуализации страницы, чтобы получить больше данных.Использование AJAX потребует от вас переосмысления способов доставки ваших данных.Например, вам понадобится один «скрипт» для загрузки страницы, затем другой «скрипт» для получения данных - конечно, они могут быть одинаковыми, только с разными параметрами.Я добавлю простой пример для демонстрации, так как рефакторинг вашего примера потребует большего понимания ваших данных и того, как они доставляются.Этот пример взят из w3schools.com .

HTML:

<script type="text/javascript">
   $(function() {
       $('#users').change(function() {
          // here's the AJAX bit 
          $.get( '/users/load.php?q=' + $(this).val(),
               function(html) {
                  $('#txtHint').html(html);
          });
       });
   });
</script>
</head>
<body>

<form>
<select name="users">
<option value="">Select a person:</option>
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>
<br />
<div id="txtHint"><b>Person info will be listed here.</b></div>

</body>
</html>

PHP

<?php
$q=$_GET["q"];

$con = mysql_connect('localhost', 'peter', 'abc123');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("ajax_demo", $con);

$sql="SELECT * FROM user WHERE id = '" . mysql_real_escape_string( $q ) . "'";

$result = mysql_query($sql);

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "<td>" . $row['Age'] . "</td>";
  echo "<td>" . $row['Hometown'] . "</td>";
  echo "<td>" . $row['Job'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?>
1 голос
/ 02 мая 2010

Это похоже на COMET. Посмотрите на различия здесь: http://ajaxian.com/archives/comet-a-new-approach-to-ajax-applications

Вот пост, в котором говорится о трудностях в PHP, в частности, со стеком LAMP: http://www.phpclasses.org/blog/post/58-Responsive-AJAX-applications-with-COMET.html - может быть немного устаревшим, как это было опубликовано в 2006 году, но вы поймете:

Обычно, когда вы говорите о ванильном «ajax», вы говорите о инициированном клиентом запросе некоторой конечной информации (запрос http завершается), без явной перезагрузки страницы.

0 голосов
/ 02 мая 2010

Итак, вы хотите, чтобы сервер отправлял каждый фрагмент данных отдельно, как только он будет создан? Боюсь, что нет такой функции с http-запросами. Вы должны закрыть его, а затем ответ отправляется в браузер.

Вы можете рассмотреть возможность отправки нескольких запросов с некоторым видом нумерации страниц.

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