0

私のメイン PHP ページは、1 つのテキスト ボックス フォームです。フォームはそれ自体に送信され、DB から取得された情報 (machine.php?pc=workstation101) が表示されます。

また、このページには、検索されたマシンに 60 秒ごとに ping を送信する別の ping.php インクルードがあります。これは div に配置され、jQuery はこの外部 ping.php ページを自動更新します。

jQuery 更新コード (以下を参照) を無効にすると ...

<script>
 $(document).ready(function() {
      $("#pinger").load("inc/ping.php");
      var refreshId = setInterval(function() {
        $("#pinger").load('inc/ping.php');
      }, 60000);
    $.ajaxSetup({ cache: false });
  });
</script>

...インクルードファイルは正常に動作します。正しい ping ステータスを表示します。ただし、親の index.php ページから変数にアクセスするには、 $GLOBALS['variable'] を使用する必要があります。しかし、私がやるとうまくいきます。

リフレッシュjQueryを有効にすると、大量の「通知:未定義のインデックス:....」エラーが発生します。DIV コンテンツをリロードするときに、 $_GET['pc'] が何らかの形で渡されないことにすべてを絞り込みました。

インクルードとして機能します。jQuery 読み込みページとして失敗します。おそらく、インクルード ページをインデックス ページにコーディングし、外部ページなしで div コンテンツを更新できますか? そのメソッドで動作するコードが見つからないようです。

アイデア?

4

2 に答える 2

0

PHP ページをインクルードすることと、ブラウザーから取得することは、まったく別のことです。

jQuery に inc/ping.php をロードするように指示すると、そのページを別のブラウザ ウィンドウにロードした場合とまったく同じになります。元の PHP ページは既に終了しており、その変数は存在しません。

この場合、/dynamic/ping.php?pc=foo のような URL を作成してロードするだけです。

于 2013-03-14T22:12:24.973 に答える
0

あなたが何を達成しようとしているのか正確にはわかりません。コメントして質問することはできませんが、そのjqueryは正しくありません。まず、テキスト ボックスの値を PHP バックエンドに渡したいと仮定しますか?

スクリプトでこれを試してください:

<script>
    function ping(){
        $.ajax("inc/ping.php?pc="+encodeURIComponent($("#your_textbox_id").val()),{})
            .success(function(data)){
                // Your php return values are here
            }).fail(function(error){
                // alert('somthing went wrong');
            })
        });
        window.setTimeout("ping()", 60000);
    }

    $(document).ready(function(){
        ping();
    });
</script>

これはテストされておらず、構文エラーがある可能性があることに注意してください...しかし、問題を解決する可能性があります

于 2013-03-14T22:21:39.817 に答える