Как показать печать с помощью AJAX / jQuery?

Поэтому я пытаюсь понять всю эту вещь 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]}; каждый раз, когда он вызывается вместо того, чтобы ждать завершения всего процесса?

Способ работы 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); ?> 

Это похоже на 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-запроса), без явной перезагрузки страницы.

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

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