我调用了一个ajax函数,用于从格式化为
的xml文件中收集数据<?xml version="1.0" encoding="utf-8"?>
<values>
<value date="2015-07-12">37.170</value>
<value date="2015-07-13">7.190</value>
<value date="2015-07-12">37.170</value>
<value date="2015-07-12">3.210</value>
<value date="2015-07-12">37.20</value>
</values>
当我从控制台得到响应时,它说 形式不佳:1:80
不确定这意味着什么,因为当我使用xml验证器时,它们都告诉我没有错误。任何帮助都会很棒。
var data = [];
$.ajax({
url: 'test.xml', // name of file you want to parse
dataType: "xml", // type of file you are trying to read
success: parse, // name of the function to call upon success
async: false,
error: function(xhr, status, error) {
alert(xhr.responseText);
console.log("readyState: " + xhr.readyState);
console.log("responseText: "+ xhr.responseText);
console.log("status: " + xhr.status);
console.log("text status: " + textStatus);
console.log("error: " + err);
}
});
function parse(xml) {
var items = jQuery(xml).find("values");
var data = [];
var values = $(items).text();
$(document).find("Values").each(function () {
$(this).find("value").each(function () { data.push($this.text);});
});
console.log(data.length);
}
不确定如何将所有值都放入数组中。
答案 0 :(得分:1)
EDIT!
小提琴已更新。
http://jsfiddle.net/b62tx8Ln/1/
无需使用parseXML解析数据。
对于双重解析,Erik Phillips可能是正确的。无论如何,这应该有用。请注意在小提琴中使用ECHO .....只是为了模拟本地xml文件。
$.ajax({
url: 'test.xml', // name of file you want to parse
dataType: "xml", // type of file you are trying to read
success: parse, // name of the function to call upon success
async: false,
error: function(xhr, status, error) {
alert("error");
}
});
function parse(xmldata) {
$(xmldata).find("value").each(function(){
alert($(this).text());
});
}
答案 1 :(得分:1)
您可能会尝试按照文档解析它两次:
您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西将是以字符串形式返回)。
因此我想象这就是你要找的东西:
function parse(xml) {
//var items = jQuery(xml).find("values");
var items = xml.find("values");
var data = [];
var values = $(items).text();
$(document).find("Values").each(function () {
$(this).find("value").each(function () { data.push($this.text);});
});
console.log(data.length);
}
答案 2 :(得分:0)
对于在IE中解析非格式良好(自闭标签)xml时遇到问题的其他人,$(xmlthing).find('nodename').each...
有效,而IE将解析$(xmlthing).children('nodename').each...
(这在FF和Chrome中很好) ,作为嵌套。
那是:
<thing />
<thing />
<thing />
将是FF / Chrome中的3件事,但如果您使用$(节点),则在IE中使用一件。儿童(物件)
$(node).find(thing)将在所有浏览器中为您提供3件事。谢谢@Steen