我有以下表格:
<form method="post" action="http://domain.com/api.json?param=value"></form>
提交此表格后,这将用来自的回复替换我的文档http://domain.com/api.json
。
是否可以发布此表单,但阻止接收响应,并将现有的 HTML 与form
?
发送 HTTP 204 No Content响应而不是通常的 200 OK 响应。
10.2.5 204 无内容
服务器已完成请求,但不需要返回实体主体,并且可能希望返回更新的元信息。响应可能包括实体头形式的新的或更新的元信息,如果存在,应该与请求的变体相关联。
如果客户端是用户代理,它不应该改变导致请求被发送的文档视图。这个响应主要是为了允许输入动作发生而不导致用户代理的活动文档视图发生变化,尽管任何新的或更新的元信息应该应用于当前在用户代理的活动视图中的文档。
204 响应不能包含消息体,因此总是由头字段之后的第一个空行终止。
您可以只使用 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);
否则,来自 a 的任何类型的提交form
都会加载一个页面。一个技巧是将其放入隐藏的 iframe 中,并在完成后删除 iframe。