2
回答
php+js+ajax 跨域读取远程动态xml文件
华为云实践训练营,热门技术免费实践!>>>   

今天偶然遇到一个js+ajax读取xml文件的需求,在操作中,遇到了些问题,比如:没有权限等,发来和大家分享一下。

js+ajax读取本地的xml时,是不会报错的,但是在读取远程动态生成的xml时,就会没有权限的error,出现跨域禁止访问的问题。一般出现这个问题,都会使用服务器端代理的方式来解决。

下面是php下使用的代理的代码:

get.php

<?php 
    header("Content-Type:text/xml");
    $pararl = $_GET['geturl'];		
    if(!empty($pararl)) {
        echo file_get_contents($pararl);
    }
?>

接下来是,query.html页面,处理js和ajax

<html>
	<body>
<script src="jquery.js"></script>
<script>
function query(geturl){
$.ajax({   
    url:geturl,   
    type: 'GET',   
    dataType: 'xml',   
    timeout: 2000,   
    error: function(xml){   
        alert('Error loading XML document'+xml);   
    },   
    success: function(xml){   
        var code=[];
        var msg=[];
        $(xml).find("Result").each(function(i){   
            code[code.length]=$(this).children("Code").text();           
            msg[msg.length]=$(this).children("msg").text();          
        });
        //如果能找到code属性,并且第一个code的值为1,显示提示信息,否则,打印全部信息
         if(xmldata.code[0]=='1'){
        	$("#data_div").html(msg);
        }else{
        	$("#data_div").html(xml.responseText);
        }  
    }   
});  
}
</script>
<div>请输入url:<input type="text" value="http://baidu.com" size="30" id="geturl"><input type="button" name="btn" value="获取信息" onclick="query($('#geturl').val())"></div>
<div id="data_div"></div>
</body>
</html>
举报
3036
发帖于6年前 2回/3K+阅
顶部