2017-06-19 27 views
0

我有一個網頁,向PHP腳本發出POST請求。根據請求的結果,按鈕的onclick事件將重定向到兩個頁面中的一個。頁面無法重定向和清除URL參數

<button id="button" type="submit">Proceed</button> 

... 

$.post('script.php', { 
    key: value 
}, function(result) { 
    if (result != null) { 
    document.getElementById("button").onclick = function() { 
     window.top.location.href = "https://example.com/page?otherkey=othervalue"; 
    } 
    } else { 
    document.getElementById("button").onclick = function() { 
     window.top.location.href = "https://example.com/otherpage?otherkey=othervalue"; 
    }; 
    } 
}); 

這適用於桌面瀏覽器很好,但在Safari瀏覽器在iOS(iOS上的10.3.2專門測試)在點擊按鈕時,頁面刷新,並不會重定向到正確的網站。另外,它清除之前存在的任何URL參數。例如,如果帶有按鈕的頁面是example.com/page?key=value,頁面將刷新並變爲example.com/page?#_=_。我試過調試和檢查一個Javascript控制檯,但它什麼也沒說。

重定向是我自己的域中的頁面,但帶按鈕的頁面已集成到Facebook應用程序頁面中(如果相關)。

另外,如果我自己構建URL並嘗試正常訪問它,它會正常加載。我不知道是什麼原因造成的,所以我不確定是否有其他相關信息值得發佈,但如果有必要,我可以說更多。

回答

1

Safari無法很好地處理函數中返回錯誤,尤其是沒有返回。我會在html元素中包含一個onsubmit="return function();",我猜這是一個表單。你也通過$('[the form ID]').submit(function(){ do something here; return false;});

+0

這並不能解決我的問題,但它的確激發了我所想成爲的解決方案。我寫了另一個答案,但謝謝你的迴應! :) – charlieshades

+0

很高興我啓發了一個想法,很抱歉它沒有直接解決問題 –

0

將這個附加到submit()事件監聽器我是對的,我認爲我沒有提供足夠的細節,但似乎是因爲問題中的按鈕位於<form>標記內,並充當提交按鈕,這是搞砸了。爲了解決這個問題,我刪除了form(因爲我沒有在任何地方提交任何數據,只是使用按鈕重定向頁面),並解決了問題。現在它適用於桌面和移動瀏覽器。