我正在努力解决一个看似简单的问题。 我有一个 json 数据,它作为纯文本文件存储在某个服务器上,我需要在 JavaScript 中加载它。我收到错误
XMLHttpRequest cannot load http://www.cgarea.com/ary_telemetry/messages.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access.
我正在阅读有关 CORS 的内容并测试不同的解决方案,但没有成功。 如果目标 URL 是 PHP 脚本,我可以设置一个 header('Access-Control-Allow-Origin: *'),但它只是一个文本文件。 我怎样才能加载这个?我是否需要创建一个小型 PHP 脚本来 返回文件内容?
我在 http://jsfiddle.net/rt6jj5tv/6/ 上放置了最少的代码
感谢任何提示,谢谢。
JS代码:
function GetMessages()
{
//$.getJSON("http://www.cgarea.com/messages.json", GetMessagesCB);
$.ajax({
type: 'GET',
url: "http://www.cgarea.com/messages.json",
dataType: "text/plain",
success: GetMessagesCB
});
}
function GetMessagesCB(data)
{
console.debug(data);
var ui = document.getElementById("Message");
ui.innerHTML = data;
}
GetMessages();
最佳答案
正如您所提到的,您需要运行 JSONP 或 CORS 代理才能通过 AJAX 从另一个域检索文本文件。这是浏览器内置的安全机制。
您可以将 header 添加到您自己的 PHP 脚本中来实现此目的。另一种可能的方法是 use YQL .
代码:
function GetMessages()
{
$.getJSON("http://query.yahooapis.com/v1/public/yql",
{
q: "select * from json where url=\"http://www.cgarea.com/messages.json\"",
format: "json"
},
function (data) {
if (data.query.results) {
GetMessagesCB(data.query.results.json);
} else {
alert('bad');
}
}
);
}
function GetMessagesCB(data)
{
console.debug(data);
var ui = document.getElementById("Message");
ui.innerHTML = JSON.stringify(data);
}
GetMessages();
您的 fiddle 已更新:http://jsfiddle.net/rt6jj5tv/7/
关于javascript - 纯文本文件的跨域ajax请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35905691/