如果我有一个JSON
名为names.json的文件:
{"employees":[
{"firstName":"Anna","lastName":"Meyers"},
{"firstName":"Betty","lastName":"Layers"},
{"firstName":"Carl","lastName":"Louis"},
]}
如何在 javascript 中使用其内容?
如果我有一个JSON
名为names.json的文件:
{"employees":[
{"firstName":"Anna","lastName":"Meyers"},
{"firstName":"Betty","lastName":"Layers"},
{"firstName":"Carl","lastName":"Louis"},
]}
如何在 javascript 中使用其内容?
如何做到这一点的一个例子可能是:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$.getJSON('names.json',function(data){
console.log('success');
$.each(data.employees,function(i,emp){
$('ul').append('<li>'+emp.firstName+' '+emp.lastName+'</li>');
});
}).error(function(){
console.log('error');
});
});
</script>
</head>
<body>
<ul></ul>
</body>
</html>
您可以简单地在 HTML 中包含一个将 JSON 对象声明为变量的 Javascript 文件。data.employees
然后,您可以使用例如从您的全局 Javascript 范围访问您的 JSON 数据。
索引.html:
<html>
<head>
</head>
<body>
<script src="data.js"></script>
</body>
</html>
数据.js:
var data = {
"employees": [{
"firstName": "Anna",
"lastName": "Meyers"
}, {
"firstName": "Betty",
"lastName": "Layers"
}, {
"firstName": "Carl",
"lastName": "Louis"
}]
}
您的 JSON 文件不包含有效的 JSON。请尝试以下操作。
{
"employees":
[
{
"firstName": "Anna",
"lastName": "Meyers"
},
{
"firstName": "Betty",
"lastName": "Layers"
},
{
"firstName": "Carl",
"lastName": "Louis"
}
]
}
然后,您应该会看到响应。查看http://jsonlint.com/
在 jQuery 代码中,您应该拥有该employees
属性。
data.employees[0].firstName
所以它会是这样的。
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$.getJSON("names.json", function(data) {
console.log(data);
$('body').append(data.employees[0].firstName);
});
</script>
</body>
</html>
当然,对于非 jQuery 版本,您也需要该属性,但您需要先解析 JSON 响应。
另请记住,这document.write
会破坏您的整个页面。
如果您仍然遇到问题,请尝试完整的$.ajax
请求而不是$.getJSON
包装器。
$.ajax({
url: "names.json",
dataType: "json",
success: function(data) {
console.log(data);
$('body').append(data.employees[0].firstName);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('ERROR', textStatus, errorThrown);
}
});
如果你想使用 PHP。
<?php
$contents = file_get_contents('names.json');
?>
<script>
var names = <?php echo $contents; ?>
var obj = JSON.parse(names);
//use obj
</script>
可选地,使用它异步:
<script>
$(document).ready(function(){
$.get("get_json.php?file=names",function(obj){
//use obj here
},'json');
});
</script>
PHP:
<?php
$filename = $_GET['file'] . '.json';
$data['contents'] = file_get_contents($filename);
echo json_encode($data);
?>
对于那些在 JQuery 倒下后由 Google 发送到这里的人,请使用Fetch API
fetch("test.json").then(async (resp) => {
const asObject = await resp.json();
console.log(asObject);
})
我知道答案是很久以前给出的,但这个结果在谷歌上显示在第一位。
但是我不想使用 jquery,所以在 vanilla JS 中,我发现这个快速教程比 senornestor 答案更干净(它还允许根据变量加载文件):
function loadJSON(filelocation, callback) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', filelocation, true); // Replace 'my_data' with the path to your file
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
// Required use of an anonymous callback as .open will NOT return a value but simply returns undefined in asynchronous mode
callback(xobj.responseText);
}
};
xobj.send(null);
}
function init() {
var location = "myfile.json";
loadJSON(filelocation=location, function(response) {
// Parse JSON string into object
loadedJSON = JSON.parse(response);
console.log(loadedJSON.somethingsomething);
});
}
init();
并在您的 html 文件中:
`<script src="myscript.js"></script>`