当我确实警告它返回这样的字符串时:
data "<?xml version="1.0" encoding="utf-8" ?>
<xml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Name>John Smith</Name>
<Description>stackoverflow</Description>
<Total>50</Total>
</Document>
</xml>"
更新
我尝试使用此方法getJSON,我确实收到警报但从未在find('Document').each.....
$.getJSON(_url, function (data) {
alert(data);
$(data).find('Document').each(function () {
debugger
var name = $(this).find('Name');
var desc = $(this).find('Description').text();
var total = $(this).find('Total').text()
});
});
如何在jquery中读取xml文件,下面是将我作为字符串返回的内容,我可以看到当我做警报(数据)时;
$.getJSON(url, {},
function (data) {
alert(data);
}
});
<?xml version="1.0" encoding="utf-8" ?>
- <xml xmlns="http://www.opengis.net/kml/2.2">
- <Document>
<Name>John Smith</Name>
<Description>stackoverflow</Description>
<Total>50</Total>
</Document>
</xml>
答案 0 :(得分:5)
如果您仍在寻找答案,Google的ajax API会内置xml-&gt; json转换器。
您可以通过http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=
致电
随你的请求网址。
如果您尝试使用JSONP并解决相同的原因问题,它将看起来像这样:
var googleAPI = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=";
$.getJSON(googleAPI + url + "&callback=?", null, function(data) {
alert(data);
$(data).find('Document').each(function () {
debugger
var name = $(this).find('Name');
var desc = $(this).find('Description').text();
var total = $(this).find('Total').text()
});
});
但是,这将为您提供JSON数据,因此您需要修改回调以对其进行序列化,并将Name,Description,Total元素作为属性进行访问。如果您需要这方面的指示,请结帐Serializing to JSON in jQuery
答案 1 :(得分:1)
您似乎误解了JSON是什么,以及如何在jQuery中使用它??
如果要进行跨域,则返回的数据必须为JSON格式。 jQuery会在收到JSON后立即尝试解析它。它期望它的格式为“jsonp1291171891383({})”,然后将其评估为JavaScript。您在非JavaScript中返回的XML。
解决此问题的一种可能方法是返回数据类似于“jsonp1({”data“:”&lt; xml&gt;“})”。如果是这种情况,那么在您的示例中,变量“data”是纯文本,您需要先解析XML,然后才能通过选择器方法访问它。
来自here。
jQuery.fromXMLString = function(strXML){
if (window.DOMParser) {
return jQuery(new DOMParser().parseFromString(strXML, "text/xml"));
} else if (window.ActiveXObject) {
var doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = "false";
doc.loadXML(strXML);
return jQuery(doc);
} else {
return jQuery(strXML);
}
};
然后在你的代码中:
$.fromXMLString(data).find('Document').each( ... );
答案 2 :(得分:0)
您不应该将.getJSON用于XML数据。相反,试试这个:
$.ajax({
url: url,
data: {},
success: function(data){
// now you can traverse your data just like the DOM
// e.g.
// alert( $(data).find('Document:first Name').text() );
},
dataType: 'xml'
});
答案 3 :(得分:0)
其他人说你不应该使用JSON,它们是正确的,但我认为你真正需要知道的是XML可以像使用jQuery的HTML一样导航。您可以使用$('Name')
等选择器来获取<Name>
数据,依此类推。因此,一旦您返回data
,就可以执行以下操作:
var people = data.children('Name');