今天偶然遇到一个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>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。