javascript 之使用 xml 数据格式发起请求

XML 有时也用于数据传输编码。
比如如果想发送如下格式的数据到服务器端

<query>
    <find zipcode="0123" radius="1km">
        pizza
    </find>
</query>
  

可以使用如下方法:

//在 XML 中编码什么物品,在哪里,半径是多少,然后向指定 URL 发送 POST 请求
//当接收到响应时,调用回调函数
function postQuery(url,what,where,radius,callback){
    var request = new XMLHttpRequest();
    request.open("POST",url);
    request.onreadystatechange = function(){
        if(request.readyState === 4 && request.status === 200){
            if(callback){
                callback(request);
            }
        }
    }
    //创建 XML 的文档流,根元素使用<query>
    //document.implementation 返回 DomImplementation 对象,该对象可执行与文档对象模型的任何实例无关的任何操作。
    var doc = document.implementation.createDocument("","query",null);
    var query = doc.documentElement; //<query>元素
    var find = doc.createElement("find"); //创建<find>元素
    query.appendChild(find); //并把它添加到<query>中
    find.setAttribute("zipcode",where);
    find.setAttribute("radius",radius);
    find.appendChild(doc.createTextNode(what));
    
    //向服务器发送 XML 编码的数据
    //这里将自动设置 Content-type 头,不需要设置
    request.send(doc);
}
  

关于 createDocument() 方法的使用方法:

createDocument() 方法创建一个新 Document 对象和指定的根元素。

  • 语法:

    nodeObject.createDocument(namespaceURI, qualifiedName, doctype)
      
  • 参数 描述:

    • namespaceURI
      为文档创建的根元素的命名空间的唯一标识符。
      如果没有命名空间,则为 null

    • qualifiedName
      为文档创建的根元素的名称。
      如果 namespaceURI 不为 null ,该名称应该包括命名空间前缀和冒号。

    • doctype
      新创建的 Document 对象的 DocumentType 对象。
      如果没有想得到的 DocumentType 对象,则为 null