如何通过 AJAX 发送 YAML?

Jim*_*mbo 4 javascript php ajax jquery yaml

请关注这个问题的技术方面,而不是为什么。原因很明显:YAML 是人类可用的最易读的数据序列化格式。因此,最好的。

如何通过 XMLHttpRequest 从客户端向服务器发送 YAML,而无需先将其转换为 JSON、XML 或其他格式?

我在客户端代码中使用 JavaScript,如果需要,我可以使用 jQuery。我选择的服务器端语言是 PHP。

根据维基百科send()XMLHttpRequest的方法:

接受包含要随请求发送的内容的单个参数。W3C 草案规定,该参数可以是脚本语言可用的任何类型,只要它可以转换为文本字符串,DOM 文档对象除外。[强调我自己]

YAML 是一个文本字符串。是否可以在使用其他数据序列化格式(如 json、xml 等)的情况下在服务器端正确发送并随后对其进行解析?

Que*_*tin 5

只需设定一个适当的内容类型和发送它。

// xhr is an instance of XMLHttpRequest which has been open()ed and had event handlers set on it already
xhr.setRequestHeader("Content-Type", "text/x-yaml");
xhr.send(string_of_yaml_formatted_data);
Run Code Online (Sandbox Code Playgroud)

请注意,大多数服务器端语言不会自动解析它,因此您需要从 POST 请求正文中读取原始数据并自行解析。

例如在 PHP 中:

$raw_yaml = file_get_contents('php://input');
$data = yaml_parse($raw_yaml);
Run Code Online (Sandbox Code Playgroud)

注意:yaml_parse()需要PECL yaml >= 0.4.0