【问题标题】:populating a form from JSON file从 JSON 文件填充表单
【发布时间】:2012-11-11 15:06:09
【问题描述】:

我正在尝试使用 JSON 文件中的数据填充表单 (onClick)。 我可以从数组中成功完成,但是当我尝试解析本地(与 .html 相同的文件夹)JSON 文件时,它不起作用。

<script>
var marks = [];
$(document).ready(function() {
    $("#RQdata").click(function(event) {
        $.getJSON('test.json', function(data) {
            $.each(data.markers, function(key, val) {
                marks.push(val[key]);


            });
        });
    });
});

function populateList() {
    for (var i = 0; i < marks.length; i++) {
        var mark = new Option(marks[i].name, markers[i].latlng);
        document.getElementById('locationList').options.add(mark);
    }
}
</script>


<h2>List</h2>
<form name="aForm">
  <select name="locationList" id="locationList" size="6" onChange="alert(value);" style=" width:800px;owerflow: auto;">
  </select>
  <input type="button" id="RQdata" name="Request Data" value="Request Data" >
</form> 

我的 test.json

{"markers":
            [{"latlng":[55.587,17.044],"name":"Some name 1"},
            {"latlng":[55.577,17.044],"name":"Some name 2"},
            {"latlng":[55.507456,17.617585],"name":"Some name 3"},
            {"latlng":[55.25642,17.154904],"name":"Some name 4"},
            {"latlng":[55.103217,17.07776],"name":"Some name 5"}]}

最好的问候

【问题讨论】:

  • 您能在浏览器的开发者工具中看到任何错误消息吗?一些浏览器还会阻止对本地文件的 ajax 请求。
  • 在浏览器控制台中检查请求,查看状态是否为 200 以及返回的内容。阅读 API 以了解如何添加 ajax 错误处理程序也 api.jquery.com/category/ajax 问题可能很简单,因为路径不正确,但是您没有提供太多其他内容,但它不起作用

标签: javascript jquery json parsing


【解决方案1】:

你的代码有几个错误,下面的版本可以工作。

var marks = [];
$(document).ready(function() {
$("#RQdata").click(function(event) {
    $.getJSON('test.json', function(data) {
    $.each(data.markers, function(key, val) {
        marks.push(val);  //It should be val instead of val[key]
    });

    populateList();  // You didn't call this function here
    });
});
});

function populateList() {
for (var i = 0; i < marks.length; i++) {
    var mark = new Option(marks[i].name, marks[i].latlng);  //marks instead of markers here
    document.getElementById('locationList').options.add(mark);
}
}

请使用检查器或其他工具进行调试。

另外,正如@matt 在评论中提到的,某些浏览器(如 Chrome)将禁止 XHR 访问本地文件。

【讨论】:

  • 非常感谢!我尝试的每一段代码都是在 Chrome 中完成的,也许它为什么不起作用。在Firefox中尝试了您的代码,并且成功了!有什么事情要做,所以它也可以在 chrome 中使用吗?
  • 也许你应该把 json 放在 web 服务器上,而不是放在本地磁盘上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多