2012-10-25 56 views
0

我有以下形式:POST形式和防範應對

<form method="post" action="http://domain.com/api.json?param=value"></form> 

在提交此表,這將取代我的文檔從http://domain.com/api.json的響應。

是否可以發佈此表單,但阻止接收回應,並保留現有的HTML與form

回答

1

發送HTTP 204沒有內容response而不是通常的200 OK響應。

10.2.5 204無內容

服務器已經履行了請求,但不需要返回 實體主體,並且可能要返回更新的元信息。 響應可能包含以 實體標題形式的新的或更新的元信息,如果存在,應該與 請求的變體相關聯。

如果客戶端是用戶代理,則不應將其文檔視圖 從導致請求發送的文檔視圖中更改。此響應爲 ,主要用於允許在沒有 引起用戶代理活動文檔視圖更改的情況下發生操作輸入,但 應將任何新的或更新的元信息應用於當前位於用戶代理活動視圖中的文檔 。

204響應不能包含消息體,因此始終由頭字段後的第一個空行終止 。

0

你可以只使用AJAX(在這個例子中的XMLHttpRequest)提交後

var xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("POST", "http://domain.com/api.json?param=value", true); 
xmlhttp.send(null); 

手之前,如果你需要的。你可以抓住你的參數值的方式對其進行編碼:

var val = encodeURIComponent(document.getElementById("param").value); 

那麼第二個行會更喜歡:

xmlhttp.open("POST", "http://domain.com/api.json?param="+val, true); 

否則,任何形式從form提交的將加載的頁面。黑客將把它放在隱藏的iframe中,並在完成後刪除iframe。

+0

該值用於對值(可能包含特殊字符)進行編碼以使其可以安全地插入到URI中,並將數據發送到URI而不是請求主體(它在POST請求中的位置) 。 – Quentin

+0

「你可以使用AJAX或XMLHttpRequest」就像說「你可以開車或使用汽車」。 – Quentin

+0

@Quentin--是的,我知道,但是你可以開車,或者更具體地駕駛一輛車(而不是卡車)。我只是說,因爲我知道還有一個jQuery的方法,它實際上使用ajax語法...所以,有兩種方法。 –