2012-05-02 43 views
0

我目前遇到一個僅在當前版本的Safari(5.1.5)中出現的錯誤,並且想知道這裏的任何人是否可以爲其提供任何解決方法。我在5.1.2中測試過它,它在那裏工作得很好,我不確定5.1.3和5.1.4,因爲我沒有訪問這些版本。Safari在重定向後重新發送相同的表格

的錯誤需要三頁,我會告訴他們的來源,然後解釋正在發生的事情:

FirstPageWithForm.htm

<form id="theForm" action="ActionHandler.ashx" method="post"> 
    <input type="hidden" name="differentField" value="1234"/> 
    <input type="hidden" name="sameField" value="1111"/> 
</form> 

<script type="text/javascript"> 
    var theForm = document.getElementById("theForm"); 
    theForm.submit(); 
</script> 

SecondPageWithForm.htm

<form id="theForm" action="ActionHandler.ashx" method="post"> 
    <input type="hidden" name="differentField" value="5678"/> 
    <input type="hidden" name="sameField" value="1111"/> 
</form> 

<script type="text/javascript"> 
    var theForm = document.getElementById("theForm"); 
    theForm.submit(); 
</script> 

ActionHandler.ashx

public void ProcessRequest(HttpContext context) 
{ 
    var referrer = context.Request.UrlReferrer; 
    var differentField = context.Request["differentField"]; 
    context.Response.Write(differentField); 
    if (differentField == "1234") 
    { 
     if (referrer.ToString().Contains("Second")) 
      context.Response.Write("Failure"); 
     else 
     { 
      context.Response.Redirect("SecondPageWithForm.htm"); 
     } 
    } 
    else 
     context.Response.Write("Success"); 
} 

正如你看到這兩種形式有相同的字段名稱,但該領域的人都有不同的價值。但是,在Safari中運行此代碼時,值"1234"將作爲differentField而不是"5678"發送。我不相信這個bug與.NET有任何關係,但我沒有一種簡單的方法來測試另一種語言來確保這一點。

事情我已經嘗試過:

  • 把表單提交代碼的函數,然後調用那個。
  • 需要Jquery並在$(document).ready()函數中調用它。
  • 將函數調用放在setTimeout()中。
  • 用我按下的按鈕代替功能。
  • 複製處理程序並將第二個表單發送到副本。

這些方法中的每一個都具有相同的效果,即打印「失敗」而不是成功。
我將在Safari論壇上提交這個錯誤(我沒有Apple開發者帳戶,目前還沒有開發新的帳戶),但我希望有人能幫助我想出一個合適的解決此問題的方法,直到他們解決問題。

編輯:Safari的論壇錯誤報告:在我的狩獵論壇https://discussions.apple.com/thread/3921507

回答

0

NicolasIgot想出了一個解決我的問題。

我剛剛將autocomplete="off"添加到第二個窗體上的窗體標籤,所有事情都開始工作了。我沒有嘗試過我的真正問題,但它對我簡單的測試用例起作用,所以我對它有信心。