Мой код ниже не извлекает данные из data.js Эта страница отлично работает, когда данные JSON жестко закодированы на странице.getJSON не запрашивает данные
<head>
<title>Test Page</title>
<script>
function jsontest() {
var text;
$.getJSON("data.js", function(result) {
text = result;
});
var obj = JSON.parse(text);
document.getElementById("content").innerHTML =
obj.name + "<br>" +
obj.street + "<br>" +
obj.phone;
}
</script>
</head>
<body onload="jsontest();">
<h1>Testing Page</h1>
<p id="content"></p>
</body>
Мои данные выглядит следующим образом
{"name":"John Johnson","street":"Oslo West 16","phone":"555 1234567"}
Могу ли я сделать простой nooby ошибку?
Вы заказали пиццу онлайн, и вы едите пиццу, как только вы повесите трубку. Это не работает так, если вы не будете стоять внутри места пиццы с людьми, которые могут читать ваши мысли. Вам нужно дождаться, когда пицца будет представлена вам. AKA, вам нужно подождать, пока вызов Ajax не будет выполнен, прежде чем вы сможете использовать данные. Для этого и нужен обратный вызов. Добро пожаловать в мир асинхронного программирования – epascarello
'getJson' - это вызов ajax, что означает, что код вокруг вызова продолжает работать, даже если данные еще не возвращены. Вам нужно перетащить все содержимое после вызова '.getJson' внутри функции обработчика. Также вам не нужно разбирать json, поскольку он ожидает возвращения типа json, если ваши данные отформатированы правильно и вы передаете правильные заголовки с сервера, на который вы накрыты. См. Документы для ссылки: http://api.jquery.com/jquery.getjson/ – scrappedcola
Если вы вызываете файл 'data.json', и ваш сервер отвечает правильным типом' application/json' типа mime, t используйте 'JSON.parse();', потому что полученные вами данные уже являются объектами json. – DanFromGermany