programing

JSON 데이터를 javascript에 구문 분석 없이 동기적으로 포함하려면 어떻게 해야 합니까?

batch 2023. 3. 17. 19:42
반응형

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

반응형