【发布时间】:2012-10-15 21:01:53
【问题描述】:
我有以下表格:
<form method="post" action="http://domain.com/api.json?param=value"></form>
提交此表单后,我的文档将替换为来自http://domain.com/api.json 的回复。
是否可以发布此表单,但阻止接收响应,并使用form 保留现有 HTML?
【问题讨论】:
我有以下表格:
<form method="post" action="http://domain.com/api.json?param=value"></form>
提交此表单后,我的文档将替换为来自http://domain.com/api.json 的回复。
是否可以发布此表单,但阻止接收响应,并使用form 保留现有 HTML?
【问题讨论】:
您可以只使用 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。
【讨论】:
发送 HTTP 204 No Content response 而不是通常的 200 OK 响应。
10.2.5 204 无内容
服务器已完成请求,但不需要返回 实体主体,并且可能想要返回更新的元信息。这 响应可能包括新的或更新的元信息,形式为 entity-headers,如果存在应该与 请求的变体。
如果客户端是一个用户代理,它不应该改变它的文档视图 从导致发送请求的原因。这个回应是 主要目的是允许输入进行操作,而无需 导致用户代理的活动文档视图发生变化,尽管 任何新的或更新的元信息都应该应用于文档 当前在用户代理的活动视图中。
204 响应不能包含消息体,因此总是 由标题字段后的第一个空行终止。
【讨论】: