我有问题。我想加载一个XML文件并从中提取特定节点,以便使用JavaScript进行显示。
我找到了以下教程:http://www.w3schools.com/dom/dom_nodes_get.asp
基于此我尝试了自己的,但它不起作用,我不知道我做错了什么。
所以基本上我想在XML文档中加载天气预报,例如:http://weather.yahooapis.com/forecastrss?w=2442047&u=c
让我说我想读取第一个值,节点“title”。
现在根据教程,我使用了以下脚本:
<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
</head>
<body>
<script>
xmlDoc = loadXMLDoc("http://weather.yahooapis.com/forecastrss?w=2442047&u=c");
x = xmlDoc.getElementsByTagName("title");
document.write(x.nodeValue);
</script>
</body>
</html>
但我没有得到任何结果。在我犯错的地方有人能帮助我吗?
答案 0 :(得分:1)
这很可能与同一原产地政策有关。这意味着您不允许从运行JavaScript的域以外的其他域获取数据。
为了进一步说明,如果我在www.example.com/
有一个页面,我可以使用该函数从www.example.com/example1/data.xml
获取xml文件,但我不允许从www.someothersite.com
获取数据。有办法解决此问题:Ways to circumvent the same-origin policy
您可以在此处详细了解:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript
答案 1 :(得分:0)
您需要将XML文件放在您自己的域中。不允许跨域请求。
答案 2 :(得分:0)
//
// you can do that using 'curl-lib', say in php, ( if your server support it, usualy they do ) like this:
//
// create this php file:
//
// doc_reader.php
// ***********************************************************
// <?php
//
// header('Content-Type: '. $_POST['url_mime']);
//
// $url = $_POST['fetch_url'];
//
// $ch = curl_init( $url );
//
// curl_setopt( $ch, CURLOPT_HEADER, false );
// curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
//
// echo curl_exec( $ch );
//
//
// exit;
//
//
// ************************************************************
//
// and put it in the same directory where your page is.
//
// send http post request to the php file ( use jQuery ) :
//
//
$.ajax({
url :'doc_reader.php',
type :'post',
dataType :'xml',
data :{
fetch_url :'http://weather.yahooapis.com/forecastrss?w=2442047&u=c',
url_mime :'application/xml'
},
success:function ( doc ) {
console.log( doc );
}
});
//
// hope it helps...
//