簡體   English   中英

自動提交表單時,避免重新循環或無限循環

[英]Avoid redirrect or endless loop while auto-submitting form

我希望我的表單在不單擊提交按鈕的情況下采取措施。 我實現了,但是現在我正處於十字路口。 如果我在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中。

無需嘗試在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>

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM