responseXML返回null?

时间:2018-03-22 10:57:35

标签: ajax xml

在我的ajax调用中,responseXML返回null。任何人都可以帮助我在哪里做错了?我的代码是。我检查了我的代码。但是我找不到任何错误。

function generateTable()
    {
        //alert("generating table");
        var xhr = new XMLHttpRequest();
        xhr.open("get","data.xml",true);
        //xhr.setRequestHeader('Content-Type', 'text/xml');
        xhr.onreadystatechange=function()
        {
            if(xhr.readyState == 4)
            {
                var root = xhr.responseXML;
                alert(root);
            }
        }
        xhr.send("");
    }

我的xml文件是......

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <temp_det>
        <srl_no>1</srl_no>
        <temperature>39</temperature>
        <on_or_off>on</on_or_off>
        <accuracy>87</accuracy>
    </temp_det>
    <temp_det>
       <srl_no>2</srl_no>
       <temperature>45</temperature>
       <on_or_off>off</on_or_off>
       <accuracy>67</accuracy>
   </temp_det>
   <temp_det>
       <srl_no>3</srl_no>
       <temperature>38</temperature>
       <on_or_off>on</on_or_off>
       <accuracy>78</accuracy>
   </temp_det>
</data>

2 个答案:

答案 0 :(得分:0)

  

它给出了这个错误。“无法加载文件:/// C:/xampp/htdocs/xml/data2.xml:仅支持协议方案的交叉原始请求:http,data,chrome,chrome-extension ,https

您收到此错误的原因是,由于安全原因,Google Chrome不允许您通过AJAX请求访问文件。所以你有两个选择。

首先,使用--allow-file-access-from-files选项并按照here中的以下步骤通过命令提示符启动浏览器。 (假设您使用的是Windows机器)。

  1. 获取Chrome浏览器安装路径的网址,例如C:\ Users-your-user-name \ AppData \ Local \ Google \ Chrome \ Application&gt;
  2. 从命令行窗口启动Google Chrome浏览器,其附加参数为“-allow-file-access-from-files”。 E.g'Chrome安装路径\ chrome.exe --allow-file-access-from-files'
  3. 其次,将安装Web服务器。您的计算机上必须已有IIS。 (同样,假设您使用的是Windows机器。)通过此服务器请求文件。

    您应该注意的是,Google Chrome会阻止此类请求。因此建议您跳过第一个选项并选择第二个选项。

答案 1 :(得分:0)

您只需要更改XML文件的第一行。 我遇到了同样的问题,然后我只是在https://www.w3schools.com/xml/中使用XML示例的第一行并将其更改为我的xml文件。