-1

HTML ページがあり、データベースからの情報を表示したいと考えていMySQLます。<iframe src="xxx.php"></iframe>HTMLソースコードを入れてみました。Firefox と Chrome で HTML を開くと、情報は正しく表示されます (xxx.phpファイルには単純な mysql クエリが含まれています) が、IE では機能しません。いくつか検索した結果、これは IE のセキュリティ問題の結果であることがわかりました。

私の質問は、MySQL データベースのコンテンツを完全に静的な HTML ファイルに表示する別の方法はありますか? 私は Javascript、Ajax、jQuery についてほとんど何も知らないので、それらを使用する必要がある場合は、できる限り詳しく説明してください。

助けてくれてありがとう!

4

3 に答える 3

2

静的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への相対パスまたは絶対URLxxx.phpです。

この実装でxxx.phpは、HTMLを生成する必要があります。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を含むすべてのブラウザーでも機能するはずです。

編集:より良い例。

于 2012-08-08T17:06:55.363 に答える
0

あなたの問題は、Internet Explorer の iframe の同一生成元ポリシーに関連していると思います。このスレッドが役立つかもしれません: IE での空白の iFrame

于 2012-08-08T17:37:29.517 に答える
0

代わりに ajax 呼び出しを使用して、mysql から受け取った情報をいくつかのページ要素に追加できます (たとえば、id が "results" の div)。

$(document).ready(function(){
    $.ajax({
      url: "script.php",
      dataType: "html"
    }).done(function( html ) {
      $("#results").append(html);
    });
});
于 2012-08-08T17:05:43.060 に答える