我在为AJAX项目使用外部XML文件时遇到了问题。 当我将AJAX变量XML更改为XML的内容时,我得到了正确的输出。 但是下面代码的输出是“未定义的”。 我做错了什么?
html& AJAX代码
<html>
<head><title>xml file in jquery</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
</head>
<body>
<table>
</table>
<script>
$(document).ready( function() {
Dataextract();
fetch();
});
function fetch() {
setTimeout( function() {
corporateData();
fetch();
}, 10000);
}
function Dataextract() {
$.ajax({
type: "GET",
url: "test.xml",
dataType: "xml",
success: function(xml) {
$("table").children().remove();
$(xml).find("feed").each( function() {
var $entry = $(this);
var mydata = $entry.find('w\\:entry').attr('w:date');
document.write(mydata);
$("table").append(info);
});
},
});
};
</script>
</body>
</html>
我的外部XML文件('test.xml')如下所示:
<rsp><feed><w:entry w:date="2012-08-15" w:circulation="154" w:hits="538" w:downloads="0" w:reach="30"/></feed></rsp>
答案 0 :(得分:0)
我认为问题在于试图双重逃避':'。试试这个:
var mydata = $entry.find('w\:entry').attr('w\:date');
要么问题或者问题是你没有逃避属性名称?我没有在使用jQuery进行Xml解析时使用名称空间,但这可能是另一种解决方案:
var mydata = $entry.find('w\\:entry').attr('w\\:date');
或者,如果这没有帮助,请尝试添加一些调试代码并使用console.log。我会从这开始:
var mydata = $entry.find('w\:entry');
console.log(mydata);
console.log(mydata.length);
至少会告诉你你的find表达是否正常。
我不确定你是否想要解决这个问题,但正如评论中提到的那样,你在尝试附加到该表时会遇到一些问题。
首先,如上所述,您没有声明“info”变量。其次,您从Xml中提取的唯一内容是日期(字符串)。试图将其附加到$('table'),你不会有任何运气。您需要使用document.createElement添加行+单元格,或者构建包含该信息的Html字符串。
即:
jQuery('table').append(
jQuery(document.createElement('tr')).append(
jQuery(document.createElement('td')).text('your value')
)
);
或
jQuery('table').append('<tr><td>yourvalue</td></tr>');
答案 1 :(得分:0)
似乎解析这个xml很棘手。
这至少在Chrome中适用于我:var mydata = $entry.find('entry').attr('w:date');
所以你可以不用w\\: