我有一点 ajax 代码来搜索 xml 文件。它正在工作,但我仍然收到一个奇怪的错误。甚至网络控制台也不知道错误在哪个文件中。
我的代码:
var run = $.ajax({
url: 'test.xml',
dataType: 'xml'
}).done(function (xmlDoc) {
xml = $(xmlDoc);
result = xml.find('product').find("name:contains('name_value')");
$('body').append('<p>'+result.text()+'</p></br>');
$('.a').text(xml.find('product').find('name').length); //displays the amount of name tags in the xml file
});
我的网页:
<p class="a"></p> <!-- output paragraph of the last Jquery code line-->
我的 xml 文件结构
<store>
<product>
<name> product name </name>
<price> price </price>
<platform> platform </platform>
</product>
</store>
和我的错误:
格式不正确:1:77
编辑他说错误发生了2次。
编辑 2 如果我转到网络选项卡,他只从谷歌托管的图书馆请求 jquery。这是我在那里看到的唯一东西。
我对ajax和xml完全陌生,所以有人可以说我做错了什么吗
了解您使用的是哪种浏览器会很有帮助,因为报告的错误会有所不同,例如,如果您使用的是 Firefox 还是 Chrome。
假设问题出在.xml文件本身(见下文)。如果我获取您的代码并设置dataType:'text'
(而不是dataType:'xml'
),那么我在 Chrome 上没有收到任何错误,但我仍然在 Firefox 中收到一个"格式不正确"的错误。
$.ajax({
url : "test.xml",
dataType : 'text',
type : 'GET',
timeout : 10000
})
.done(function(data,textStatus,jqXHR) {
xml = $(data);
result = xml.find('product').find("name:contains('Eleventy')");
$("body").append("<p>"+xml.text()+"</p>");
})
.fail(function(jqXHR,textStatus,errorThrown) {
console.log("Fail: " + textStatus + " (" + errorThrown + ")");
})
.always(function(a,textStatus,c){
});
将您的.xml文件简化为单个产品,看看会发生什么:
<store>
<product>
<name EleventyOne </name>
<price> Free </price>
<platform> StackOverflow </platform>
</product>
</store>
在这里,<name>
标签被破坏了。Chrome不会抱怨dataType:'text'
但Firefox会抱怨。他们都抱怨如果dataType:'xml'
.如果我将文件名从"test.xml"更改为"test.txt",也不会抱怨。
在处理此类问题时,最好的方法是尽可能简化代码/数据,以便隔离问题。如果您将 xml 文件简化为格式明显正确的单个产品,并且您仍然收到格式错误的错误,那么您就知道数据文件本身不是问题(这不太可能但有可能,我过去在文件本身很好时报告过格式错误的错误)。