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

您的值应该是 (30000, 60000, 120000),而不是 (0, 1, 2)。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 回答