【问题标题】:How can I send YAML over AJAX?如何通过 AJAX 发送 YAML?
【发布时间】:2014-09-23 14:51:58
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您意识到 AJAX 请求和其他请求一样是普通的常规 HTTP 请求吗?它们只是碰巧在网页后台通过代码完成,而不是通过直接的人工干预。如果某些数据格式可以通过点击/提交表单通过 HTTP 发送,那么它可以通过 AJAX 发送,因为它们本质上是完全相同的过程。

标签: javascript php jquery ajax yaml


【解决方案1】:

只需 setappropriate 内容类型和 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 请求正文中读取原始数据并自行解析。

例如在 PHP 中:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2014-08-05
    • 2014-09-23
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    相关资源
    最近更新 更多