JSON 데이터를 javascript에 구문 분석 없이 동기적으로 포함하려면 어떻게 해야 합니까?
배열을 포함한 JSON 파일을 javascript Object 변수로 로드하고 싶습니다.
페이지 로드 시 데이터가 필요하므로 페이지 로드 시작 시 동기식으로 하고 싶습니다.
jQuery.getJ를 사용할 수 있었습니다.하지만 이건 비동기 에이잭스고 좀 과잉 살상인 것 같아요
독자적인 해석을 하지 않고 동기식으로 JSON을 로드할 수 있는 방법이 있습니까?
(어느 쪽인가 하면,<script language="JavaScript" src="MyArray.json"></script>
)
도움에 감사드리며, javascript 초보자이기 때문에 의미가 있기를 바랍니다.파올로
getJSON()
단순한 줄임말입니다.ajax()
와 함께 기능하다dataType:'json'
세트.ajax()
함수를 사용하면 요청에 대해 많은 것을 커스터마이즈할 수 있습니다.
$.ajax({
url: 'MyArray.json',
async: false,
dataType: 'json',
success: function (response) {
// do stuff with response.
}
});
아직 콜백을 사용하고 있습니다.async:false
단, Ajax 콜에서 실행이 계속되기 전에 기동됩니다.
여기 있습니다.
// Load JSON text from server hosted file and return JSON parsed object
function loadJSON(filePath) {
// Load json file;
var json = loadTextFileAjaxSync(filePath, "application/json");
// Parse json
return JSON.parse(json);
}
// Load text with Ajax synchronously: takes path to file and optional MIME type
function loadTextFileAjaxSync(filePath, mimeType)
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET",filePath,false);
if (mimeType != null) {
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType(mimeType);
}
}
xmlhttp.send();
if (xmlhttp.status==200 && xmlhttp.readyState == 4 )
{
return xmlhttp.responseText;
}
else {
// TODO Throw exception
return null;
}
}
메모: 이 코드는 최신 브라우저(IE8, FF, Chrome, Opera, Safari)에서만 작동합니다.obosolete IE 버전에서는 ActiveX를 사용해야 합니다.원하시면 방법을 알려드리겠습니다.
어떤 종류의 서버 스크립트를 사용하는 경우 페이지의 스크립트 태그에 데이터를 인쇄할 수 있습니다.
<script type="text/javascript">
var settings = <?php echo $json; ?>;
</script>
이렇게 하면 AJAX를 비동기적으로 사용하지 않고 데이터를 동기화할 수 있습니다.
그렇지 않으면 AJAX 콜백을 기다렸다가 작업을 계속해야 합니다.
json 형식으로 제공된 작은 입력 파일을 읽고 소량의 데이터를 추출하기만 하면 되었습니다.이 방법은 다음과 같은 상황에서 잘 작동했습니다.
json 파일은 스크립트와 같은 디렉토리에 있으며 data.json이라고 불리며 다음과 같습니다.
{"outlets":[
{
"name":"John Smith",
"address":"some street, some town",
"type":"restaurant"
},
..etc...
데이터를 다음과 같이 js로 읽습니다.
var data = <?php echo require_once('data.json'); ?>;
다음과 같은 데이터 항목에 액세스합니다.
for (var i in data.outlets) {
var name = data.outlets[i].name;
... do some other stuff...
}
필요한 경우JS는 옵션이며 requirejs를 사용하여 종속성을 만들 수 있습니다.Angular 어플리케이션에서 데이터를 시뮬레이션하기 위해 사용합니다.일부 조롱된 데이터는 앱 부트스트랩 전에 존재하는 것이 중요합니다.
//Inside file my/shirt.js:
define({
color: "black",
size: "unisize"
});
json 데이터를 정의로 랩하고 종속성으로 선언하면 됩니다.자세한 내용은 이쪽:http://requirejs.org/docs/api.html#defsimple
AFIK jQuery는 성능 문제가 발생할 수 있기 때문에 동기 XHR 요청을 사용하지 않습니다.다음과 같이 XHR 응답 핸들러에서 앱 코드를 랩업할 수 있습니다.
$(document).ready(function() {
$.get('/path/to/json/resource', function(response) {
//'response' now contains your data
//your app code goes here
//...
});
});
jQuery를 사용하지 않는 최신 HTML5 방법은 다음과 같습니다.
var url="https://api.myjson.com/bins/1hk8lu" || "my.json"
var ok=await fetch(url)
var json=await ok.json()
alert(a.test)
언급URL : https://stackoverflow.com/questions/4116992/how-to-include-json-data-in-javascript-synchronously-without-parsing
'programing' 카테고리의 다른 글
릴레이를 사용할 때 로컬 상태를 어떻게 처리합니까? (0) | 2023.03.17 |
---|---|
Wordpress 사용자 지정 등록 양식 (0) | 2023.03.17 |
ReactJs, 같은 파라미터로 setState를 호출한다. (0) | 2023.03.17 |
Ajax 제출 전 jQuery 양식 검증 (0) | 2023.03.17 |
오류: 연결을 업그레이드할 수 없음: 컨테이너를 찾을 수 없음("wordpress") (0) | 2023.03.17 |