我想重新加載頁面使用Java腳本頁面重新加載但頁面中的發佈數據不加載發佈數據被刪除,而頁面重新加載可以任何一個幫助我它JavaScript location.reload()丟失發佈數據
function currencychange(xxx) {
setTimeout('delay()', 2000);
}
function delay(){
location.reload();
}
這是我使用重新加載的onchange
我想重新加載頁面使用Java腳本頁面重新加載但頁面中的發佈數據不加載發佈數據被刪除,而頁面重新加載可以任何一個幫助我它JavaScript location.reload()丟失發佈數據
function currencychange(xxx) {
setTimeout('delay()', 2000);
}
function delay(){
location.reload();
}
這是我使用重新加載的onchange
window.location.reload()
發出GET
,所以是的,POST
數據將會丟失。
可以發出後,唯一的方法要麼是:
使用AJAX數據回發,得到新的頁面,並用它代替你的身體元素,或
創建一個頁面上的表單元素,當前爲window.location.href
,並將要回發的數據作爲隱藏輸入。然後,在貨幣更改呼叫form.submit()
我認爲你需要的頁面的JavaScript代碼重新POST不會重新加載,如HTTP POST而不是HTTP GET。
location.reload
不應該發佈任何數據。如果您需要將數據發送回服務器,請考慮使用method='post'
(如果有)或使用AJAX(例如jQuery.post
)
這是Chrome中的一個已知錯誤。問題在於,Chrome在通過JavaScript重新加載時不會執行POST。如果您使用重新加載按鈕來做到這一點,那麼它會正常運行並詢問用戶是否要重新發布數據。
所有的細節在這裏: http://code.google.com/p/chromium/issues/detail?id=6429 [編輯:相關錯誤] https://bugs.webkit.org/show_bug.cgi?id=23735
請星BUG,使其得到固定更快。
我解決這樣問題:
// 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>';
只是有點複雜,但它的工作原理。希望這可以幫助!最好的,盧卡。
這是一個完整的黑客,但必要的,並允許它與Safari的工作。因此,在頁面末尾,我將所有發佈數據推入會話中
$_SESSION['post'] = $_POST
然後我使用jQuery來更新會話變量。然後使用location.reload();重新加載頁面,一旦我完成了更改,並在頁面加載時,我簡單地將所有會話數據重新推送到後期。
$_POST = £_SESSION['post'];
結果與表單提交相同。
你可以試試這個:
<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>
一般在它的Joomla是一個壞主意用JavaScript來重新加載頁面。如果在貨幣更改時嘗試更改頁面上的其他值,爲什麼不使用getElementById來簡單替換onChange上的信息? – Cleanshooter