PHP:使用GET参数刷新页面而不滚动

时间:2014-02-16 17:17:16

标签: javascript php ajax firefox refresh

我的问题似乎很简单,但我对网络编程有点新意,所以这里是:

我希望我的按钮刷新页面,传递一些GET参数来触发PHP操作,我不希望屏幕在页面顶部滚动。

我目前使用的是ajax和javascript的混合,它可以实现我想要的但是它不可靠。这是我记得的代码(我手头没有代码)

<?php
echo '
    <span href="$.ajax(\''.$_SERVER['PHP_SELF'].'?do=dosomestuff\'); setTimeout(function(){windows.location.reload()},100);)> ... </span>';
?>

这个实现有三个问题:

  1. 当href可能会完成这项工作时,我觉得使用ajax是不合适的
  2. 我的一个朋友测试了它并且他弹出了firefox(“要显示此页面,Firefox必须发送信息,这些信息将重复之前执行的任何操作(例如搜索或订单确认)“)每次他按下按钮。我读它来自POST数据传递,但我只使用GET数据。
  3. 在某些计算机上,该按钮每次都不起作用。这是随机的,也许延迟不够大。延迟有多大,以至于我100%肯定它会每次都有效,但同时它对用户来说并不明显?
  4. 感谢您的帮助和建议!

    编辑:按照Tularis的建议,这是我提出的代码,但我无法让它工作

    <?php
    if (isset($_GET['do']) and $_GET['do'] == 'swap')
    {
        rename('img1.jpg', 'img3.jpg');
        rename('img2.jpg', 'img1.jpg');
        rename('img3.jpg', 'img2.jpg');
    }
    ?>
    
    <html>
    <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript">
    $(function() {
       $("#spanLink").click(function() {
            $.ajax('<?php echo $_SERVER['PHP_SELF'];?>?do=swap');
       });
    });
    </script>
    </head><body>
    <img src="img1.jpg" width="300" height="300" alt="cat">
    <img src="img2.jpg" width="300" height="300" alt="dog">
    <span style="cursor:hand;" id="spanLink">Some text to click</span>
    </body></html>
    

2 个答案:

答案 0 :(得分:0)

首先,不要将html-links与javascript结合在一起。这是糟糕的形式(并导致你遇到的问题)。相反,我建议使用jQuery并将onClick事件处理程序链接到span元素,如下所示:

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function() {
   $.('#spanLink').click(function() {
      $.ajax('<?php echo $_SERVER['PHP_SELF'];?>?do=somestuff');
   });
});
</script>
</head><body>
<span id="spanLink">Some text to click</span>
</body></html>

答案 1 :(得分:0)

我建议您使用ajax和jQuery,您可以轻松获取新内容并在页面中的任何位置更新它,而无需重新加载整个页面。