2012-11-20 107 views
4

我想重新加載頁面使用Java腳本頁面重新加載但頁面中的發佈數據不加載發佈數據被刪除,而頁面重新加載可以任何一個幫助我它JavaScript location.reload()丟失發佈數據

function currencychange(xxx) { 
    setTimeout('delay()', 2000); 
} 
function delay(){ 
    location.reload(); 
} 

這是我使用重新加載的onchange

+0

一般在它的Joomla是一個壞主意用JavaScript來重新加載頁面。如果在貨幣更改時嘗試更改頁面上的其他值,爲什麼不使用getElementById來簡單替換onChange上的信息? – Cleanshooter

回答

5

window.location.reload()發出GET,所以是的,POST數據將會丟失。

可以發出後,唯一的方法要麼是:

  1. 使用AJAX數據回發,得到新的頁面,並用它代替你的身體元素,或

  2. 創建一個頁面上的表單元素,當前爲window.location.href,並將要回發的數據作爲隱藏輸入。然後,在貨幣更改呼叫form.submit()

0

我認爲你需要的頁面的JavaScript代碼重新POST不會重新加載,如HTTP POST而不是HTTP GET。

0

location.reload不應該發佈任何數據。如果您需要將數據發送回服務器,請考慮使用method='post'(如果有)或使用AJAX(例如jQuery.post

0

我解決這樣問題:

// In the page called by POST, assuming coming from a search form 
// (i.e. searchResult.php) 
$working=array(); 

if ($_POST) { 
    if(!isset($_POST["postArray"])) // Not set, first call 
     $working = $_POST; 
    else 
    $working = unserialize($_POST["postArray"]); // recalled by someone else 

    foreach ($working as $key => $value) { // Getting data 
       $kv[] = "$key=$value"; 

// do something with input data.... 
      } 

echo '<form action="newRequest.php" method="post">'; 
// Your data here ...... 
echo '<input type="hidden" name="currPost" value="' . htmlentities(serialize($working)) . '">'; 
echo '<input type="submit" value="Go!">'; 
echo '</form>'; 
} // end if($_POST) .... 


// This is the "newRequest.php" form 
$postDataReceiver=array(); 
foreach ($_POST as $key => $value) { // Getting data from searchResult.php 
      $kv[] = "$key=$value"; 

      switch($key) { 
       // Your other stuff here ...... 
       case "currPost": // Here we are! 
        $postDataReceiver = unserialize($value); 
        break; 


       } // end switch 
} // end foreach 
echo '<form action="searchResult.php" method="post">'; 
// Your data here ...... 
echo '<input type="hidden" name="postArray" value="' . htmlentities(serialize($postDataReceiver)) . '">'; 
echo '<input type="submit" value="Go Back to search result!">'; 
echo '</form>'; 

只是有點複雜,但它的工作原理。希望這可以幫助!最好的,盧卡。

1

這是一個完整的黑客,但必要的,並允許它與Safari的工作。因此,在頁面末尾,我將所有發佈數據推入會話中

$_SESSION['post'] = $_POST 

然後我使用jQuery來更新會話變量。然後使用location.reload();重新加載頁面,一旦我完成了更改,並在頁面加載時,我簡單地將所有會話數據重新推送到後期。

$_POST = £_SESSION['post']; 

結果與表單提交相同。

0

你可以試試這個:

<form action="<?=$_SERVER['PHP_SELF']?>" method="post" name="form" id="form"> 

</form> 

<script> 
    // reload page every x miliseconds 
    setInterval(function(){ 
    // inser here the post variables. Examples: 

    var input = document.createElement('input'); 
    input.type = 'hidden'; 
    input.name = 'id'; 
    input.value = <?=$id?>; 

    document.form.appendChild(input); 

    var input2 = document.createElement('input'); 
    input2.type = 'hidden'; 
    input2.name = 'anotherid'; 
    input2.value = <?=$anotherid?>; 

    document.form.appendChild(input2); 

    // send form 
    document.form.submit(); 
    }, 120000); 
</script>