【发布时间】:2016-01-01 12:41:54
【问题描述】:
我想创建一个 HTML 页面,该页面提供一个按钮(链接、其他一些可点击元素等),当按下该按钮时,它会将特定的常量 POST 请求发送到特定的常量服务器。我需要发布的值是一个特定的 JSON 编码常量值 ({"key":"value"}),因此对于 HTTP,它只是一个非常短的常量字符串。
我必须使用的值和 URL 是常量。为了让事情发生,我必须准确地发送这个恒定的 POST 请求。无需参数化此请求或“设置值”或类似内容。另外,我没有 parameter 名称或类似名称。我不能发送带有值为 JSON 编码值的参数的参数列表,但我必须单独发送 JSON 编码值。完整的 POST 请求可能如下所示:
POST /post/path/to/action HTTP/1.1
Host: the.specific.server
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
{"key":"value"}
(NOT parameter={"key":"value"} 或类似正文!)
服务器不在我的权限下,而是我想使用的服务。
使用纯 shell 意味着我可以使用 curl 非常简单地做到这一点:
curl http://the.specific.server/post/path/to/action -d '{"key":"value"}'
我想象过类似的东西
<button url="http://the.specific.server/post/path/to/action"
value="{%22key%22:%22value%22}">visible text</button>
但我没有找到合适的。
基于this 或this 或this 之类的问题,我尝试了类似这样的各种方法:
<form method="POST" action="http://the.specific.server/post/path/to/action">
<input type="text" id="key" key="value">value</input>
<button type="submit" value="{%22key%22:%22value%22}">visible text</button>
</form>
有或没有输入字段、按钮、其他参数、其他值等,但最终在按下时没有向服务器发送任何有用的信息。充其量我得到的东西也在传输参数名称(因此有效负载不仅仅是 Json 编码的值)。
我想我只是缺少了一些基本的东西:-}
【问题讨论】:
-
HTMLButtonElement 上没有
url属性,您的问题有点不清楚:您如何设置值?你想如何传递你的价值观?你用什么来检索服务器上的那些?为了将<input>作为 POST 发送到您的服务器,您必须为它们提供名称,所以这里没有发送任何内容。HTMLInputElement上也没有key属性。 how to POST from a webpage to a server 上的一些读数怎么样? -
服务器不在我的权限下。为了让事情发生,我必须准确地发送这个恒定的 POST 请求,就是这样。它没有进一步参数化,因此无需“设置值”。我在我的问题中重复了这些方面,以进一步明确这一点。
-
但是这里你没有向服务器发送任何东西......
-
是的,也许是这样。我在网络编程方面没有那么熟练。但我想要向服务器发送一个 POST 请求。我怎样才能做到这一点?正如我所写,我的试验没有成功。顺便说一句,当我提到服务器时,我指的是
the.specific.server。我不想与 HTML 页面来自的服务器通信。实际上,就我而言,这是通过file://访问的本地文件。 -
猜测您通过 js 获取 JSON 值,您可以使用 JSON 内容设置隐藏输入:
var jsonString = "{%22key%22:%22value%22}"; var obj = JSON.parse(decodeURIComponent(jsonString)); var hid = document.querySelector('input[type="hidden"]'); hid.name = Object.keys(obj)[0]; hid.value = obj[hid.name];和 HTML