【问题标题】:How do I show the print with AJAX/jQuery?如何使用 AJAX/jQuery 显示打印?
【发布时间】:2011-02-14 15:54:18
【问题描述】:

所以我试图理解整个 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]}; 而不是等待整个过程完成?

【问题讨论】:

    标签: php jquery mysql ajax


    【解决方案1】:

    那么,您希望服务器在生成每条数据后分别发送它吗?恐怕,http请求没有这样的功能。您必须将其关闭,然后将响应发送到浏览器。

    您可以考虑发送多个请求,并带有某种分页。

    【讨论】:

      【解决方案2】:

      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);
      ?>
      

      【讨论】:

        【解决方案3】:

        这类似于 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 请求完成),没有显式重新加载页面。

        【讨论】:

          猜你喜欢
          • 2012-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多