美文网首页Android精选jQuery
PHP获取XML传递的数据

PHP获取XML传递的数据

作者: 饮杯梦回酒 | 来源:发表于2018-12-20 23:10 被阅读50次

导读:

  • 首先先明确XML 是一种用于标准结构化文档交换的数据格式(另一种JSON),你可以在 XML 教程 中找到更多有关 XML 的信息。

实现:

  • XML一般格式:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <!--传递的数据-->
    <name>饮杯梦回酒</name>
    <sex>male</sex>
</root>
  • 如果想在PHP文件中获取XML中的数据,可以使用file_get_contents()函数(详情),此外事先必须先利用header()函数(详情)来告诉浏览器将其按照XML文件格式解析,编写完XML和PHP文件后,在web页面处理Ajax请求的成功的回调中不再使用xhr.responseText方法获取PHP返回的数据转而使用xhr.responseXML,最终该函数会把整个文件读入到一个字符串中,通过与HTML一样的DOM操作拿数据(整体流程以上述XML文件为例):

1.PHP获取XML数据

<?php
  header("Content-type:application/xml"); //  还有一种是类型是:text/xml 二者本质的区别在于编码,前者采用XML中自定义的编码(推荐)
  echo file_get_contents("info.xml"); 
?>

2.在Ajax中获取数据
ps:这里我利用原生JS封装好了一个自己的myAjax方法(简书MarkDown不支持页内跳转,故源码放在页面底部)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="../myAjax-jQ.js"></script>
</head>
<body>
    <script type="text/javascript"> 
        window.onload = function() {
            var btn = document.getElementsByTagName("button")[0];
            btn.onclick = function() {
                myAjax({
                    type: "GET",
                    url: "ajax-xml.php",
                    success: function(xhr) {
                        var res = xhr.responseXML; //  res打印出来就是#document(与HTML的简直一模一样)
                        console.log(res.querySelector("name").innerHTML, res.querySelector("sex").innerHTML);
                    },
                    error: function(xhr) {
                        alert(xhr.status);
                    }
                })
            }       
        }
    </script>
    <button>发送请求</button>
</body>
</html>

最终在浏览器得到返回结果如下:


Result

总结:

  • 以上就是PHP获取XML数据的核心代码,当然根据需求不同用到的方法也不尽相同,小伙伴应灵活应对(毕竟有我们万能的W3C)。
  • 附自己封装的myAjax方法:
function obj_new(data) {
    //  防止IE7↓有Ajax缓存,所以每次请求时都动态的改变URL参数
    data.t = new Date().getTime();
    var res = [];
    for(var key in data) {
        //  URL中不能出现中文,使用encodeURIComponent方法进行转码
        res.push(encodeURIComponent(key)+"="+encodeURIComponent(data[key]));
    }
    return res.join("&");
}
function myAjax(option) {
    //  把传入的对象转化成URL字符串形式
    if(option.data){
        var str =  obj_new(option.data);
    }   
    var xmlhttp, timer;
    //  创建异步请求对象
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }else {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if(option.type.toUpperCase() == "GET") {
        xmlhttp.open(option.type, option.url+"?"+str, true);
        xmlhttp.send(); 
    } else {
        xmlhttp.open(option.type, option.url, true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send(str);
    }

    xmlhttp.onreadystatechange = function() {
        clearInterval(timer);
        if(xmlhttp.readyState === 4) {
            if(xmlhttp.status >= 200 && xmlhttp.status < 300 || xmlhttp.status == 304) {
                option.success(xmlhttp);
            } else {
                option.error(xmlhttp);
            }
        }
    }
    //  判断是否传入了超时时间
    if(option.timeout) {    
        timer = setInterval(function(){
            console.log("中断请求");
            xmlhttp.abort();
            clearInterval(timer);
        }, option.timeout)
    }
}

相关文章

  • PHP获取XML传递的数据

    导读: 首先先明确XML 是一种用于标准结构化文档交换的数据格式(另一种JSON),你可以在 XML 教程 中找到...

  • php通过curl发送XML数据,并获取XML数据

    php编程中经常会用到用xml格式传送数据,如调用微信等第三方接口经常用到,这里演示下php以curl形式发送xm...

  • 微信支付回调通知注意事项

    接收XML数据 由于php7移除了GLOBALS[‘HTTP_RAW_POST_DATA’]将无法获取到微信传回的...

  • 2019-08-23 ajax , xml ,json

    XML 可扩展的标记语言 php执行结果有中文 必须在php闻不见顶部设置 如果php中需要返回XML数据 也必...

  • cos-php-sdk-v5 快速文档

    COS-PHP-SDK-V5 腾讯云COS-PHP-SDK-V5(XML API), 开发准备 SDK 获取 1、...

  • js解析xml

    案例:ajax请求获取的数据为xml文件,解析xml标签中的数据信息 1、ajax请求,测试地址为:获取地图坐标偏...

  • 浏览器相关问题总结

    1 xml与json的区别 数据体积方面,JSON相对XML来讲,数据的体积小,传递的速度更快些; 数据交互方面,...

  • 爬虫项目之xml解析

    1.xml是获取xml报文并且如何分析数据 xml文件如下*

  • Day.07.06 PHP上传图片

    图片上传到数据库html php 从MySQL中获取数据并在html展示html php

  • 面试知识1

    一:xml和json的区别 1:数据体积方面 json相对于xml来讲 数据体积小 传递速度更快 2:数据交互方面...

网友评论

    本文标题:PHP获取XML传递的数据

    本文链接:https://www.haomeiwen.com/subject/hboukqtx.html