使用ajax从文本文件中读取可以在某些服务器上运行但在其他服务器上运行吗?

时间:2016-03-17 23:12:42

标签: javascript jquery ajax

我遇到了一个非常奇怪的问题。 我应该首先指出我是ajax的新手。

通过这里和所有专家的大量阅读,我设法创建了一个脚本,通过ajax调用允许我在我的服务器上读取包含图像链接的文本文件。然后这些图像显示在我的html页面上。

这可能看起来很奇怪,但实际上我创建了一个经常写入此文本文件的Windows程序。这允许我的html页面根据我的Windows程序输出的文本显示动态图像。

现在,问题......

当文本文件位于我的Dropbox公共文件夹上时,该网站运行良好。 Ajax从文本文件中提取文本并显示图像。

现在,当我拿到那个SAME文本文件,并将它ftp到我的ubuntu服务器时,Ajax不再读取文本文件。所有其他配置保持不变,除了ajax URL src当然指向新的文本文件位置。

有效的代码:

<html>
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex,nofollow" />
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
            $.ajax({
            url : "https://dl.dropboxusercontent.com/u/********/status.txt",
            dataType: "text",
            success : function (data) {
            console.log(data)
               var lines = data.split(",")
                for (var i = 0; i < lines.length; i++) {
                    var img = $('<img class="dynamic">'); 
                    img.attr('src', lines[i]);
                    img.appendTo('#status');
                }
            }
        });         
    });
</script>
</head>
<body>
<div id="status"></div>      
</body>
</html>

代码不起作用(除了托管在不同服务器上的文本文件外,所有图像和文本文件都相同)

<html>
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex,nofollow" />
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
            $.ajax({
            url : "http://a-different-server.com/status.txt",
            dataType: "text",
            success : function (data) {
            console.log(data)
               var lines = data.split(",")
                for (var i = 0; i < lines.length; i++) {
                    var img = $('<img class="dynamic">'); 
                    img.attr('src', lines[i]);
                    img.appendTo('#status');
                }
            }
        });         
    });
</script>
</head>
<body>
<div id="status"></div>      
</body>
</html>

这可能与我的服务器上的mime类型或某些设置有关吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

正如JanR的建议,这是跨域问题。根据此处的说明:http://enable-cors.org/server_apache.html

,通过向服务器添加CORS支持解决了这个问题