有人可以請建議,我試圖找出整整一週,但仍然沒有運氣。Tripple HTTP請求被髮送到服務器,當點擊一個鏈接
我的問題是網絡應用程序。當用戶點擊一個鏈接時,點擊特定鏈接(其他鏈接正常),IE8瀏覽器向服務器發送三個HTTP請求。它假設只發送一個請求。
1 HTTP請求是POST - 標題和正文數據是正確的(所有參數好看)
第二個HTTP請求是POST - 標題和正文數據是正確的(所有參數好看)
第三HTTP請求是GET - 沒有Referer在標題中,沒有任何內容(因爲它是GET)。
第三個請求導致Servlet拋出NULL指針excite,因爲servlet試圖讀取FORM參數。
所有請求都發送到同一個Servlet。 這三個請求在1 - 2秒內發生。我確定這不是多次點擊。
用戶正在使用IE8 With Window XP。 這是無法在我的環境中重現。
我身邊有互聯網研究了一個星期,我注意到一個已知問題IE8將創建服務器的雙要求,這種情況下,似乎是關於「.submit()」中的JavaScript。我非常詳細地研究了我的代碼,我相信事實並非如此。
這裏是鏈接的樣子。請建議。
<a href=\"#\" onClick=\"test.goToNextPage();return false;\">Test link</a>
this.goToNextPage = function()
{
// do some paramter manipulation here (such as customer data),
//not related to this issue
createForm().submit();
}
function createForm()
{
bcForm = document.createElement("form");
bcForm.setAttribute("method", "POST");
//real code add some hidden parameter(e.g. action, Form ID) and value here...
document.body.appendChild(bcForm);
return bcForm;
}
爲什麼用JS打造的形式,並用鏈接提交?爲什麼不在標記中使用表單,我們JS要填充隱藏的字段(如有必要),並使用真正的提交按鈕? –