我有這樣的表格。jQuery`submit`方法忽略POST使用GET發送。爲什麼?
<form id="hiddenForm" method="post" action="/my-controller/my-action/" enctype="multipart/form-data">
<input type="hidden" id="HiddenFormInput" name="HiddenFormInput">
</form>
這是由網頁通過https://[my-server]/my-controller/my-action/
訪問,這也是行動的形式點產生。
在服務器端,我區分了GET
和POST
請求。頁面顯示爲明顯(GET
),或者根據表單的值顯示一些結果(POST
)。
當我使用jQuery提交表單(我不使用AJAX在這裏,只需提交表單),在這個片段中,
$("#hiddenForm").submit();
然後jQuery的似乎提交這份表格GET
,雖然它的明確標記爲POST
。即使是alert($("#hiddenForm").attr("method"));
總是會產生"post"
。但是,僅當頁面已由GET
加載時纔會發生此不想要的行爲。如果頁面出現POST
,即該表單已被提交至少一次,則所有內容均按預期工作。
更新
的問題是一個普通的老preventDefault()
之一。觸發提交的按鈕具有自己的功能。這是一個超鏈接。所以我有這一連串的行動。
- 超鏈接到
https://[my-server]/my-controller/my-action/#
- 提交表單用行動
https://[my-server]/my-controller/my-action/
。
當然,這將導致GET
調用沒有提交表單。一旦我在頁面https://[my-server]/my-controller/my-action/#
超鏈接失去了它的功能。這就是爲什麼第二次嘗試總是起作用的原因,因爲連鎖行動被縮減爲提交表格。
-
超鏈接到(因爲已經有任何效果)https://[my-server]/my-controller/my-action/#
- 提交表單用行動
https://[my-server]/my-controller/my-action/
。
然後它的工作當然。
'document.getElementById(「hiddenForm」)。submit();'做什麼? – epascarello
你怎麼知道這個頁面是用'GET'方法提交的? –
是否嘗試在表單中添加''元素? –