0

重複の可能性:
PHP 文字列を Javascript 変数に渡す (改行のエスケープを含む)

という名前の PHP ファイルがあるとしscheduler.phpます。スクリプトが含まれています

<script>
window.setInterval(function(){
    find_opt_schedule();
}, 60000);
</script>

...そしていくつかのPHPコード:

<form action="scheduler.php" method="post">
    <select name="refresh" id="refresh">
            <option value="30000">30000</option>
            <option value="60000" selected>60000</option>
            <option value="120000">120000</option>
    </select>
</form>

refreshスクリプト内の選択リストからユーザーが選択した値を使用するにはどうすればよいですか? 特に、60000 を、ユーザーがリストから選択する必要がある変数に置き換えたいと考えています。これを試してみましたが、リフレッシュ レートが 60000 ミリ秒ではなく非常に高くなっています。

window.setInterval(function(){
    find_opt_schedule();
    alert(<?php echo (int)$_POST['refresh']; ?>);
}, <?php echo (int)$_POST['refresh']; ?>);
4

4 に答える 4

5

値は (0, 1, 2) ではなく (30000, 60000, 120000) にする必要があります。POST フィールドには、テキストではなく、選択したオプションの値が含まれます。

注: 結果の HTML ドキュメントのソースを確認することで、これを理解できたはずです。「1」は親指のように突き出ているはずです。

于 2012-08-29T17:58:33.307 に答える
3
<select name="refresh" id="refresh">
    <option value="30000">30000</option>
    <option value="60000" selected>60000</option>
    <option value="120000">120000</option>
</select>   


window.setInterval(function(){
    find_opt_schedule();
}, <?php echo (int)$_POST['refresh']; ?>);

そして、必ず使用してください:

<form action="yourscript.php" method="post" name="form" id="form">

送信ボタン、または JavaScript:

<select name="refresh" id="refresh" onchange="form.submit()">

<input type="submit" value="Set refresh"/>

セッション ストレージを使用すると、次のようになります。

<?php 
 session_start();
 if( isset( $_POST['refresh']) ){
   $_SESSION['refresh'] = (int) $_POST['refresh'];
 }
 ?>

<script type="text/javascript">
 window.setInterval(function(){
    find_opt_schedule();
}, <?php echo isset($_SESSION['refresh'])?$_SESSION['refresh']:120000; ?>);
</script>

<form action="scheduler.php" method="post" name="form" id="form">
  <select name="refresh" id="refresh" onchange="form.submit()">
    <option value="30000">30000</option>
    <option value="60000" selected="selected">60000</option>
    <option value="120000">120000</option>
 </select>  
 <input type="submit" value="Set refresh"/>
</form>
于 2012-08-29T17:55:07.390 に答える
0

JQuery を使用します。

<html>
<body>

<select name="refresh" id="refresh">
    <option value="30000">30000</option>
    <option value="60000" selected>60000</option>
    <option value="120000">120000</option>
</select>


<script type="text/javascript" src="jquery.js"></script>          
<script type="text/javascript">                                         
    function setInterval(refresh_rate)
    {
        window.setInterval(function(){
          find_opt_schedule();
        }, refresh_rate);
    }

    $(function(){
         $('#refresh').change(function () {setInterval($(this).val());});
    }
</script>  

</body>
</html>
于 2012-08-29T18:01:48.687 に答える
-1

ええと...それは単なるHTMLです。必要なのは、それを読んで、必要に応じてタイムアウトを調整することだけです。

<script>
  (function() {
    var start = new Date().getTime(),
        selector = document.getElementById('refresh');
    setInterval(function() {
      // check if timer has run out
      var now = new Date().getTime();
      if( now-start > selector.value) {
        find_opt_schedule();
        start = now;
      }
    },1000);
  })();
</script>
于 2012-08-29T17:57:11.600 に答える