自动提交表单时避免重定向或无限循环

时间:2015-01-25 05:20:18

标签: javascript php jquery

我希望我的表单在不点击提交按钮的情况下采取行动。我实现了这个目标,但现在我已经走到了十字路口。如果我在action属性中使用脚本URL,我的用户会跳转到另一个页面。如果我瞄准脚本本身,我会让他陷入无休止的循环中。我该如何解决这个问题?

这是我的代码:

<form class="myForm" action="includes/teste.php" method="POST" id="form-id">
  <input name="myField" type="hidden" id="myField" class="myField" value="" />
</form>

<script language="JavaScript"  type="text/javascript">
  window.onload=function(){
    if(navigator.geolocation)
    {
      navigator.geolocation.getCurrentPosition(showPosition);
    }
    else
    {
      alert("Geolocation is not supported by this browser.");
    }
  }
  function showPosition(pos){
    document.getElementById('myField').value = (pos.coords.latitude+","+pos.coords.longitude);
    document.getElementById("form-id").submit()  
  }
</script>

如果你想知道这是teste.php应该做的事情:

<?php 
  session_start();
  $_SESSION["origin"] = $_POST['myField'];
?>

基本上这就是我想要实现的目标,但不会无休止地重新加载页面或重新修改用户。

JS代码本身将用户当前位置的经度和纬度发送到隐藏输入的值。我需要从那里获取它并将其存储在$ _SESSION中。

1 个答案:

答案 0 :(得分:1)

不是试图在PHP中创建$ _SESSION变量,而是可以使用JS创建一个cookie,然后使用$ _COOKIE ['name']在任何需要的地方使用PHP访问它。

为了方便起见,请将其添加到文档的开头:

<script type="text/javascript">
function set_cookie ( cookie_name, cookie_value, lifespan_in_days, valid_domain )

var domain_string = valid_domain ? ("; domain=" + valid_domain) : '' ;
document.cookie = cookie_name + "=" + encodeURIComponent( cookie_value ) +
"; max-age=" + 60 * 60 * 24 * lifespan_in_days +
"; path=/" + domain_string ;
} 
</script>

然后将document.getElementById("form-id").submit()替换为set_cookie( "origin", pos.coords.latitude+","+pos.coords.longitude, 7 );