【问题标题】:Get content from MySQL database into html page从 MySQL 数据库中获取内容到 html 页面
【发布时间】:2012-08-09 01:46:13
【问题描述】:

我有一个 HTML 页面,我想显示来自 MySQL 数据库的一些信息。我尝试将<iframe src="xxx.php"></iframe> 放入 HTML 源代码中。当我在 Firefox 和 Chrome 中打开 HTML 时,信息显示正确(xxx.php 文件包含一个简单的 mysql 查询),但它不适用于 IE。经过一番搜索,我发现这是 IE 安全问题的结果。

所以,我的问题是:是否有另一种方法可以将 MySQL 数据库中的内容显示为完全静态的 HTML 文件?我对 Javascript、Ajax 和 jQuery 几乎一无所知,所以如果必须使用它们,请尽可能详细地指导我,以便我能够遵循它。

感谢您的帮助!

【问题讨论】:

  • 为什么不直接提供 xxx.php 的 URL?在任何情况下,您都不会在“完全静态的 html”文件中显示任何内容。
  • 我很确定 iframe 在所有版本的 IE 中都能正常工作
  • -1 我认为这个问题不符合投票条件。
  • @skjaidev:php 文件包含对 mysql 数据库的非常简单的查询,所以我认为它与问题无关。
    @somnath:在 IE 中,直到版本 8 我仍然收到 the webpage cannot be found... 错误
  • 我的意思是通过 iframe 显示它并不会使其成为“静态”HTML 文件。

标签: php mysql html


【解决方案1】:

如果您别无选择,只能提供静态 html,请尝试考虑通过 JavaScript 使用 AJAX 调用。

例如,在 jQuery 中你可以这样做:

<html>
.
.
.
<body>
    <!-- every other piece of html -->
    <div id="your_php_results"></div>
    <script type="text/javascript">
         $(function() {
             $.get('xxx.php', function(data) {
                 $('#your_php_results').html(data);
             });
         });
    </script>
</body>
</html>

xxx.php 是xxx.php 的相对路径或绝对 URL。

在此实现中,xxx.php 必须生成 HTML,然后将其放置在 div 中。 jQuery $.get-call 所做的是它请求您在第一个参数中指定的位置,并获取资源生成的所有输出。例如,如果这是您的 php 文件:

<?php
    //xxx.php
    $data = array('Apfel', 'Birne', 'Banane'); //this is just example data
?>
<ul>
<?php foreach($data as $fruit) : ?>
    <li><?php echo $fruit ?></li>
<?php endforeach; ?>
</ul>

那么生成的输出将是:

<ul>
   <li>Apfel</li>
   <li>Birne</li>
   <li>Banane</li>
</ul>

这将由$.get 获取,执行后生成的 HTML 文件将是:

<html>
.
.
.
<body>
    <!-- every other piece of html -->
    <div id="your_php_results">
    <ul>
        <li>Apfel</li>
        <li>Birne</li>
        <li>Banane</li>
    </ul>
    </div>
    <script type="text/javascript">
         // ...
    </script>
</body>
</html>

如果 JS 不是一个选项,则剩下 iFrame 变体,它也应该适用于所有浏览器,包括 IE。

编辑:更好的例子。

【讨论】:

  • 您好 Florian,非常感谢您的详细解释。我得到的错误(在 iframe 部分)是The webpage cannot be found HTTP 404 ...。我不确定在哪里放置$(function()... 部分。我的xxx.php 文件只回显一个数字,是否可以满足“xxx.php 必须生成 HTML”的要求?另外,如何处理&lt;script&gt; 部分?您是否可以将&lt;script&gt;、$(function()... 放在一个 html 页面中?知识匮乏见谅
  • 我进行了编辑以进一步解释。如果您在 IE 中获得 404,我怀疑您的路径有问题,您可以尝试使用 xxx.php 的绝对 URL 吗?
  • 嗨弗洛里安,我正在阅读您编辑的答案。路径是绝对路径(完整 url)。我读了一些类似的问题,但他们得到了空白错误。
  • 你能和 Rafael 的回答核对一下吗?
  • 我创建文件http://2.todaytravels.info/xxx.php 并放入示例内容。我创建了http://2.todaytravels.info/test.html 并放入了您的示例内容。但是当我打开http://2.todaytravels.info/test.html 时,它会显示一个空白页。你能告诉我我做错了什么吗?谢谢!
【解决方案2】:

您可以改用 ajax 调用并将您从 mysql 收到的信息附加到某些页面元素(例如 id 为“results”的 div):

$(document).ready(function(){
    $.ajax({
      url: "script.php",
      dataType: "html"
    }).done(function( html ) {
      $("#results").append(html);
    });
});

【讨论】:

    【解决方案3】:

    我认为,您的问题与 Internet Explorer 的 iframe 上的同源策略有关,这个帖子可能会对您有所帮助:Blank iFrame in IE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      相关资源
      最近更新 更多