为什么我的AJAX代码会产生错误?

时间:2015-03-09 07:15:38

标签: jquery html ajax xml google-cdn

我有一些ajax代码来搜索xml文件。它工作但我仍然得到一个奇怪的错误。即使是webconsole也不知道错误在哪个文件中。

我的代码:

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
});

我的HTML:

<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 如果我转到网络标签,他只会从谷歌托管的图书馆请求jquery。这是我在那里唯一看到的东西。

我完全是ajax和xml的新手,所以有人可以告诉我做错了什么

1 个答案:

答案 0 :(得分:1)

了解您使用的浏览器会很有帮助,因为报告的错误会因您使用的是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>标记已损坏。如果dataType:'text',则Chrome不会抱怨,但Firefox会抱怨。他们都抱怨dataType:'xml'。如果我将文件名从“test.xml”更改为“test.txt”,则不会抱怨。

在处理这样的问题时,最好的方法是尽可能简化代码/数据,以便隔离问题。如果您将xml文件缩减为单个产品(格式正确,并且仍然出现格式错误),那么您就知道数据文件本身不是问题(这不太可能,但可能,我报告了错误的错误)在过去文件本身很好的时候。)