【问题标题】:AJAX Error when attempting to read xml file尝试读取 xml 文件时出现 AJAX 错误
【发布时间】:2015-06-11 19:34:25
【问题描述】:

我正在尝试使用 ajax 从 xml 文件中检索一些数据

  <?xml version="1.0" encoding=UTF-8"?>

  <user>
     <u_idno>1</u_idno>
     <u_name>nobody</u_name>
     <u_srnm>nothing</u_srnm>
     <u_role>linux</u_role>
  </user>

  <user>
     <u_idno>2</u_idno>
     <u_name>yesbody</u_name>
     <u_srnm>something</u_srnm>
     <u_role>administrator</u_role>
  </user>

但我遇到了一个错误

Uncaught TypeError: Cannot read property 'getElementsByTagName' of null

我不确定为什么它会说 null,我一直在疯狂地搜索以找出我做错了什么,但我一无所知。我的javascript如下

  function f_ajax() {

     var lv_request;

     try {
        lv_request = new XMLHttpRequest();
     } catch (error) {
        lv_request = new ActiveXObject("Microsoft.XMLHTTP");
     }

     lv_request.onreadystatechange = function() {

        if(lv_request.readyState == 4 && lv_request.status == 200) {

           lv_xml = lv_request.responseXML;
           lv_row = lv_xml.getElementsByTagName("user");
           lv_output = null;

           for (lv_cnt = 0; lv_cnt < lv_row.length; lv_cnt++) {

              lv_output = lv_output + lv_row[lv_cnt].childNodes[0].nodeValue;

           }

           document.getElementById("h2_ajax").innerHTML = lv_row;

        }

     }

     lv_request.open("GET", "data.xml", true);
     lv_request.send();

  };

  f_ajax();

【问题讨论】:

  • lv_request.responseText 中有什么内容?
  • 输出整个xml文件
  • 如果您在 responseText 中看到的值不是完全有效的 XML,您将在 responseXML 中看到 NULL。
  • 看看下面的帖子:stackoverflow.com/questions/3781387/responsexml-always-null -- 特别是关于将responseText 解析回 XML 文档的答案(即 Kenny 的答案)。
  • 您的开始&lt;u_role&gt; 标记与结束&lt;/role&gt; 标记不匹配。这是复制错误还是在真实文件中?

标签: javascript html ajax xml


【解决方案1】:

您的 XML 格式不正确。它缺少根并且还有其他一些问题。试试这个:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <user>
   <u_idno>1</u_idno>
   <u_name>nobody</u_name>
   <u_srnm>nothing</u_srnm>
   <u_role>linux</u_role>
 </user>
 <user>
   <u_idno>2</u_idno>
   <u_name>yesbody</u_name>
   <u_srnm>something</u_srnm>
   <u_role>administrator</u_role>
 </user>
</root>

【讨论】:

  • 那些不正确的结束标签是我的问题中的一个错字,但它是修复它的根标签,我不知道我需要一个主父母,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 2018-05-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 2013-05-02
  • 2019-07-31
相关资源
最近更新 更多