如何通过AJAX发送YAML?

时间:2014-07-31 15:13:11

标签: javascript php jquery ajax yaml

  

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

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

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

根据Wikipedia,XMLHttpRequest的send()方法:

  

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

YAML是一个文本字符串。可以在服务器端上使用其他数据序列化格式(如json,xml等)在服务器端上正确发送和解析吗?

1 个答案:

答案 0 :(得分:4)

set appropriate内容类型和send

// 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);

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

e.g。用PHP:

$raw_yaml = file_get_contents('php://input');
$data = yaml_parse($raw_yaml);

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