2012-10-16 34 views
3

今天在我的工作場所遇到了一個奇怪的問題。在JSP中,我有如下所示的多個腳本標籤,其中一個腳本標籤的src中有一個空白空間。這個JSP已成功加載firefox,在我輸入值並單擊提交後,JSP將提交兩次,一次使用post請求,另一次使用get請求。問題是爲什麼表單提交兩次?如果有人遇到這個問題。請回復。Javascript <script>標記錯誤

我們通過在腳本標記中放置一個虛擬js文件來解決這個問題,但想要了解它背後的真正問題。

<script src="file.js" type="text/javascript"/> 
<script src="file1.js" type="text/javascript"/> 
<script src="file2.js" type="text/javascript"/> 
<script src="file3.js" type="text/javascript"/> 
<script src=" " type="text/javascript"/> 
<script src="file4.js" type="text/javascript"/> 
+0

因此,'src =「」'腳本行被移除時發生雙重帖子?一次使用標籤時,我遇到了類似的問題。我認爲它看起來像這樣:,這看起來與你的問題相反。 –

回答

5

hrefsrc屬性,一個空字符串將被視爲一個相對URI,並且因此將解析到作爲當前加載腳本相同的路徑。所以調用<script>標籤用空SRC(假設空白得到由JSP修剪),就等於是說:

<script src="thispage.jsp" type="text/javascript"/> 

即使資源將無法正確瀏覽器解析爲JavaScirpt,服務器將仍然發送給瀏覽器。從服務器端來看,它看起來像一個GET請求thispage.jsp,並已盡職盡責,導致兩個請求thispage.jsp - 您期望的POST和無關的GET。

0

請注意並非所有瀏覽器都支持「自關閉」腳本標記。這可能是Firefox錯誤地分析了您的空腳本標記,並且只包含了一些您引用的腳本文件。

<script></script>   <!-- this works --> 
<script />    <!-- this doesn't --> 

反直覺,因爲他們,原因是在this SO answer好解釋的。

編輯:我寫了一個演示文件,從Chrome 22和IE9開始,這是罪魁禍首。只要我的服務器正常運行,try my demo for yourself