source

json을 변수에 로드하다

lovecheck 2023. 3. 28. 21:53
반응형

json을 변수에 로드하다

아주 간단한 일을 해야 하는데, 제가 보기에는 쉬운 방법이 없는 것 같아요.리모트 소스에서 JSON 데이터를 로드하여 jQuery를 사용하여 글로벌 Javascript 변수에 저장하기만 하면 됩니다.제가 가진 건 다음과 같습니다.

var my_json;
$.getJSON(my_url, function(json) {
  var my_json = json;
});

my_json 변수는 정의되지 않은 상태로 유지됩니다.나는 이것이 분명히 범위의 문제라고 생각한다.제가 보기엔 $.getJ가SON 메서드는 JSON을 반환해야 하지만 XMLHttpRequest 개체를 반환합니다.이렇게 하면:

request = $.getJSON(my_url);
my_json = request.responseText.evalJSON();

readystate == 4가 될 때까지 responseetext는 null로 유지되기 때문에 작동하지 않습니다.응답 텍스트는 정상적으로 실행되므로 콜백 함수를 사용하여 반환해야 할 것 같습니다.

이렇게 어려울 리가 없어!그렇죠?

이것으로 끝입니다.

var json = (function () {
    var json = null;
    $.ajax({
        'async': false,
        'global': false,
        'url': my_url,
        'dataType': "json",
        'success': function (data) {
            json = data;
        }
    });
    return json;
})(); 

가장 큰 문제는 이다.$.getJSON비동기적으로 실행되기 때문에 Javascript가 실행되기도 전에 호출하는 식을 지나갑니다.success콜백이 기동하기 때문에 변수가 데이터를 캡처하는 것은 보증되지 않습니다.

특히,'async': false옵션을 지정합니다.매뉴얼에는 다음과 같이 기재되어 있습니다.

기본적으로는 모든 요청이 비동기식으로 전송됩니다(즉, 기본적으로는 true로 설정됩니다).동기 요청이 필요한 경우 이 옵션을 false로 설정하십시오.동기요구는 일시적으로 브라우저를 잠그고 요청이 활성화되어 있는 동안 모든 액션이 비활성화될 수 있습니다.

코드 비트는 다음과 같습니다.

var my_json;
$.getJSON(my_url, function(json) {
  my_json = json;
});
<input  class="pull-right" id="currSpecID" name="currSpecID" value="">

   $.get("http://localhost:8080/HIS_API/rest/MriSpecimen/getMaxSpecimenID", function(data, status){
       alert("Data: " + data + "\nStatus: " + status);
    $("#currSpecID").val(data);
    });

여기에 이미지 설명 입력 여기에 이미지 설명 입력

var itens = null;
$.getJSON("yourfile.json", function(data) {
  itens = data;
  itens.forEach(function(item) {
    console.log(item);
  });
});
console.log(itens);
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
</head>
<body>
</body>
</html>

  • JSON 파일을 javascript 변수에 외부로 가져옵니다.
  • 이 sample_data에는 JSON 파일의 값이 포함됩니다.

var sample_data = '';
$.getJSON("sample.json", function (data) {
    sample_data = data;
    $.each(data, function (key, value) {
        console.log(sample_data);
    });
});

언급URL : https://stackoverflow.com/questions/2177548/load-json-into-variable

반응형