【问题标题】:Why is my AJAX code producing an error?为什么我的 AJAX 代码会产生错误?
【发布时间】:2015-05-10 07:17:46
【问题描述】:

我有一些 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
});

我的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 次。

edit 2 如果我转到网络选项卡,他只会从谷歌托管的库中请求 jquery。这是我在那里看到的唯一东西。

我对 ajax 和 xml 完全陌生,所以有人能告诉我我做错了什么

【问题讨论】:

  • 您能否使用浏览器开发者工具中的网络选项卡检查请求/响应并分享那里显示的响应
  • 这是您得到的唯一错误日志。
  • @ArunPJohny 将输出添加到问题中。 (编辑 2)
  • 您可以尝试的另一件事是dataType: 'text',然后尝试在xml = $(xmlDoc); 之前提醒xmlDoc 的值
  • 尝试将console.log(typeof xmlDoc) 添加到done 函数的开头。可能是因为你说响应是 XML,jQuery 会为你预先解析它并将 jQuery 对象传递给函数,而不是普通的 XML 字符串,它处理 JSON 的方式相同。

标签: jquery html ajax xml google-cdn


【解决方案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>

在这里,&lt;name&gt; 标记已损坏。如果dataType:'text',Chrome 不会抱怨,但 Firefox 会抱怨。如果dataType:'xml',他们都会抱怨。如果我将文件名从“test.xml”更改为“test.txt”,也不会抱怨。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2012-01-03
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多