我的XML文件没有被谷歌Chrome和Internet Explorer(My XML file i

2019-06-23 10:06发布

我想提出一个简单的JavaScript应用程序,我需要加载一个XML文件,并显示在用户面前。 但我的代码只能在Mozilla Firefox,但是当涉及到Chrome和Internet Explorer他们没有工作。 我加载我的XML文档在本地机器。

$(document).ready(function() {
    $('.buttons').slideToggle('medium');

    $.ajax({ 
    url: "dictionary.xml", 
    success: function( xml ) { 
        $(xml).find("word").each(function(){ 
            $("ul").append("<li>" + $(this).text() + "</li>");
        }); 
   } 
    });
}

这是我的XML

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

    <word> 
      <threeletter>RIP</threeletter> 
      <fourletter>PIER</fourletter>
      <fiveletter>SPIRE</fiveletter> 
      <sixletter>SPIDER</sixletter> 
     </word>

     <word> 
      <threeletter>SUE</threeletter> 
      <fourletter>EMUS</fourletter>
      <fiveletter>SERUM</fiveletter> 
      <sixletter>RESUME</sixletter> 
     </word>

     <word> 
      <threeletter>COO</threeletter> 
      <fourletter>CON</fourletter>
      <fiveletter>CONDO</fiveletter> 
      <sixletter>CONDOM</sixletter> 
     </word>

    </xml>

我发现了错误,在这里它是

XMLHttpRequest cannot load file:///C:/Users/John/Desktop/JsTwist/dictionary.xml. Origin null is not allowed by Access-Control-Allow-Origin.

Answer 1:

谷歌浏览器不允许在AJAX请求file://默认协议。

你需要与Chrome启动--allow-file-access交换机。

以下是说明每个操作系统上提供的开关。

我不知道如何启用IE的文件协议。

可能是最容易做的事情是建立一个本地Web服务器,并在它的XML文件一起运行你的应用程序,那么你就不必担心这个问题在任何浏览器。

编辑

后期编辑,我知道了。 我想万一别人有扔了这一点,有一个问题。

当请求与jQuery的XML文档,你应该总是提供在设置对象中的数据类型。 在内部,jQuery也最好在返回什么猜测,我已经受够了考虑一个非常好的XML文档是HTML / XHTML。

要做到这一点,添加数据类型:“XML”。 例如:

$(document).ready(function() {
    $('.buttons').slideToggle('medium');

    $.ajax({ 
        url: "dictionary.xml", 
        success: function( xml ) { 
            $(xml).find("word").each(function(){ 
                $("ul").append("<li>" + $(this).text() + "</li>");
            }); 
        },
        dataType: "xml"
    });
}

支持的数据类型都可以在文档页面上jQuery.ajax() 。

此外,我遇到试图获取从远程服务器的RSS源时,上面的访问控制允许来源的错误。 我已经决心要解决这个问题的唯一途径是代理请求从服务器端代码的RSS提要,并通过一些代理脚本实现它。 下面是PHP一个简单的例子:

<?php

 if(isset($_GET['q']) && isAjax())
 {
    $q = strip_tags($_GET['q']);
    header("Status: 200");
    header("Content-type: text/xml");
    echo  file_get_contents('http://'.$q);   
    exit();
 }

function isAjax() {
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
    ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'));
}

?>

CAVEAT我强烈建议修改上面的脚本只有通过确认允许那些你打算投放到您的客户端代码的位置q或进一步限制isAjax功能。 我不是一个PHP开发人员,我不假装知道PHP安全最佳实践。 如果任何人有意见,以提高PHP代码片段,我会高兴地应用它们。



文章来源: My XML file is not being by Google Chrome and Internet Explorer