[英]XML is not well-formed in jquery
我已經調用了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);
}
不知道如何將所有值都放入數組。
編輯!
小提琴已更新。
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());
});
}
您可能會嘗試根據文檔將其解析兩次:
您期望從服務器返回的數據類型。 如果未指定,則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);
}
對於在解析IE中格式不正確的(自關閉標簽)xml時遇到問題的其他任何人, $(xmlthing).find('nodename').each...
可以工作,而IE可以解析$(xmlthing).children('nodename').each...
(在FF和Chrome中很好用),嵌套。
那是:
<thing /> <thing /> <thing />
在FF / Chrome中將是3件事,但是在IE中,如果您使用$(node).children(thing)
$(node).find(thing)將在所有瀏覽器中為您提供3件東西。 謝謝@Steen
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.