通八洲科技

JavaScript怎么发送XML数据 Ajax提交XML格式请求方法

日期:2025-12-29 00:00 / 作者:星降
JavaScript发送XML数据需用XMLHttpRequest或fetch设置Content-Type为application/xml,并传入格式良好的XML字符串;推荐fetch,注意实体转义与服务端解析配置。

JavaScript 发送 XML 数据,核心是使用 XMLHttpRequest(或 fetch)设置正确的请求头,并将 XML 字符串作为请求体发送。关键点在于:内容类型必须设为 application/xmltext/xml,且数据需是格式良好的 XML 字符串。

用 XMLHttpRequest 发送 XML

这是最传统、兼容性最好的方式,适合需要精细控制请求头和状态的场景:

示例:

const xmlStr = `

  张三
  28
`;

const xhr = new XMLHttpRequest();
xhr.open('POST', '/api/submit');
xhr.setRequestHeader('Content-Type', 'application/xml');
xhr.onreadystatechange = function () {
  if (xhr.readyState === 4 && xhr.status === 200) {
    console.log('响应:', xhr.responseText);
  }
};
xhr.send(xmlStr);

用 fetch 发送 XML(推荐现代项目)

fetch 更简洁,但要注意它不会自动处理 XML 响应;发送时仍需显式设置 Content-Type

示例:

const xmlStr = 'Book';

fetch('/api/process', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/xml'
  },
  body: xmlStr
})
.then(res => res.text())
.then(xmlText => {
  console.log('服务器返回的 XML:', xmlText);
});

构造 XML 字符串的注意事项

手拼 XML 容易出错,尤其含特殊字符(如 &、中文)时:

简单构造示例(避免手动拼接):

const doc = document.implementation.createDocument('', '', null);
const root = doc.createElement('data');
const nameEl = doc.createElement('name');
nameEl.textContent = '李四&王五'; // 自动转义
root.appendChild(nameEl);
doc.appendChild(root);

const serializer = new XMLSerializer();
const xmlStr = serializer.serializeToString(doc); // 得到标准 XML 字符串

服务端接收与常见问题

后端需能解析 application/xml 类型的请求体(如 Node.js 的 express-xml-bodyparser,Java Spring 的 @RequestBody 配合 MappingJackson2XmlHttpMessageConverter):

基本上就这些。不复杂但容易忽略 Content-Type 和字符转义,按步骤来基本一次就能通。