我遇到了一个非常奇怪的问题。 我应该首先指出我是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类型或某些设置有关吗?
感谢您的帮助!
答案 0 :(得分:0)
正如JanR的建议,这是跨域问题。根据此处的说明:http://enable-cors.org/server_apache.html
,通过向服务器添加CORS支持解决了这个问题