2014-11-23 122 views
0

我有重新加載在Javascript中的父頁面的問題。彈出html頁面重新加載滯後的父頁面

當我用窗體打開彈出窗口並提交它(第一次嘗試)時,父頁面會重新載入,但會與舊數據一起重新載入。

當我再次使用另一個值(第二次嘗試)執行此操作時,父頁面確實會顯示數據更改,但它顯示了第一次嘗試的以前的已修復值。

當我第三次嘗試並提交第三個值時,父頁面將重新加載並顯示第二個值。

依此類推,等等。所以有這個滯後。

更重要的是,這隻適用於Chrome(Mac版)。在Safari和Firefox中,表單甚至沒有提交。無論我提交彈出窗體多少次,數據都保持不變。

發生了什麼事以及如何解決?

的鏈接彈出窗口:

<a href="#" onclick="window.open('/add-payment/16','popUpWindow','height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes');">550</a>

,並在彈出的窗口本身:

<!DOCTYPE html> 
<html> 
<head lang="en"> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 

<script> 
    function dothesubmit(){ 
     paymentform=document.getElementById('addpayment'); 
     paymentform.submit(); 
     window.opener.location.href="http://localhost:5000/editsupplement/10"; 
     window.close(); 
} 
</script>  

<form id="addpayment" action="/add-payment/16" method="post"> 
    <input type="text" class="form-control" name="sum"> 
    <button type="submit" onclick="dothesubmit();">Save</button> 
</form>  

</body> 
</html> 

回答

0

你太很快重載父頁面。在重新加載父頁面之前,您應等待表單提交完成。 您可以通過ajax提交表單,等待請求完成,然後重新加載父頁面並關閉彈出窗口。

$('#addpayment').submit(function(e) { 
    e.preventDefault(); 
    return $.ajax({ 
     type: "POST", 
     url: this.getAttribute('action'), 
     data: $(this).serialize(), 
     dataType: 'json' 
    }).always(function(data){ 
     window.opener.location.href="http://localhost:5000/editsupplement/10"; 
     window.close(); 
    }); 
}) 

這裏是一個小提琴:http://jsfiddle.net/tyb2gy2d/3/

+0

哦,謝謝!沒有想過。 – kurtgn 2014-11-24 17:08:31