【问题标题】:Get Json document data from online file从在线文件中获取 Json 文档数据
【发布时间】:2015-05-01 23:35:38
【问题描述】:

由于我是 json 新手,你们能帮帮我吗?我的数据文件位于此网址 - http://www.thedailystar.net/json/category
现在我想以以下格式显示它:

<ul id="smenu">
    <li></li>
</ul>

那么,如何获取从 url 获取数据并运行循环打印出来的请求呢?我试过这段代码,但什么也没发生。在此先感谢:)

var xmlhttp = new XMLHttpRequest();
var url = "http://www.thedailystar.net/json/category";

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var myArr = JSON.parse(xmlhttp.responseText);
        myFunction(myArr);
    }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();

function myFunction(arr) {
    var out = "";
    var i;
    for (i = 0; i < arr.length; i++) {
        out += '<li href="' + arr[i].name + '">' +
            arr[i].display + '</li><br>';
    }
    document.getElementById("smenu").innerHTML = out;
}

【问题讨论】:

  • 您在页面地址中使用www 吗?如果不是,则为跨域请求。使用浏览器开发工具网络选项卡检查请求。如果您不在thedailystar.net 域上工作,它肯定是跨域并受same origin policy
  • 感谢您的回复。是的,当我完成您的响应步骤时,我发现了跨域来源策略。我在不同的服务器上。我现在可以做什么来获得文件的访问权限。

标签: javascript jquery html css json


【解决方案1】:

如果您的 JavaScript 没有在 thedailystar.net 域上运行,这将是一个跨域请求。如果是这种情况,您需要在资源服务器 (http://www.thedailystar.net/json/category) 上启用 CORS。

大多数时候,为了启用 CORS,服务器需要在其响应中返回以下标头:

Access-Control-Allow-Origin: *

有关 CORS 的更多信息:http://enable-cors.org/server.html

【讨论】:

    【解决方案2】:

    您在提供的 URL 中的数据包含一个对象,该对象具有一个名为 category 的属性,其值是一个数组。这个数组是我怀疑你期望解析的。 因此,只需将调用 ty myFunction 更改为:

    myFunction(myArr);
    

    到:

    myFunction(myArr.category);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      相关资源
      最近更新 更多