2013-07-26 4 views
3

현재 서버의 일부 데이터가 자바 스크립트 객체에 저장되어 있어야하는 웹 애플리케이션을 작성하고 있습니다. 로드해야하는 데이터의 양은 매우 적습니다. 아마도 약 1KB입니다. 데이터를 애플리케이션에로드하는 방법에 대한 결정에 직면했습니다. 여기에 두 명백한 내가 취할 수있는 경로 (나에게 어쨌든)입니다자바 스크립트 객체에 데이터를로드하는 방법

1 - jQuery의 문서 준비 기능을 사용하여, 나는이 서버에 AJAX 요청을하고 해당 자바 스크립트 객체의 응답을 저장합니다. 이런 식으로 보일지도 모릅니다.

$(function() { 
    $.get('index.php?get=data', function(data) { 
     myObj.addData(data); 
    }); 
}); 

2 - 대안은 첫 페이지 요청 중에 페이지와 함께 데이터를 보내는 것입니다. 이를 위해서 내 서버가 데이터를 생성하여 <script> 태그 사이의 마크 업에 출력하도록했습니다. 나의 현재 프로젝트는 PHP에 있기 때문에, 그것은 다음과 같이 보일 것입니다 :

... 
</div> 
<script> 
    window.myData = <?= json_encode($myData) ?>; 
</script> 
... 

JQuery와 문서 준비 기능은 나중에 window.myData라는 글로벌 변수에 대한 모양과 같은 적절한 자바 스크립트 객체로로드 것 :

$(function() { 
    myObj.addData(window.myData); 
}); 

자바 스크립트 개체에 데이터를로드하는 기본 방법이 있습니까? 저장되는 데이터의 양은 비교적 적지 만 서버의 ping이 크지 않은 경우 AJAX 호출은 대기 시간이 길어질 수 있습니다. 그러나 AJAX 호출이 이러한 일에 관해서 더 대중적으로 보일 것입니다. 유효한 이유가 있습니까?


편집 : 데이터가 거의 변경되지 않습니다 (1 년에 한 번). 따라서 브라우저 캐싱이 많은 문제가되어서는 안됩니다.

+0

을 @ShivanRaptor 아니,'올바른 기능 json_encode' 믿습니다. '$ myData'는 자바에서 배열로 변환되어야하는 PHP의 연관 배열입니다. 따라서 JSON으로 인코딩하면 Javascript가 이해할 수있는 올바른 구문을 제공합니다. –

+0

옵션 1을 선호합니다. window.myData = ; 주로로드 할 때 데이터를 가져 오는 대신로드 할 때 데이터를 가져 오는 것이 좋습니다. 그러나 그것이 데이터가 마치 작은 것처럼 말하면됩니다. – deach

+0

json_encode는 일반적으로 요청 데이터를 javascript 객체 표기법으로 인코딩하기 위해 서버 측에서 사용됩니다. jQuery는 요청 후 디코드를 처리합니다. json_decode는 json 객체를 수동으로 구문 분석하지 않고 javascript에서 직접 사용할 수없는 PHP 배열로 변환합니다. – Hobbes

답변

2

는 $ .getJSON 방법을 사용

$.getJSON('/functions.php', { get_param: 'value' }, function(data) { 
    $.each(data, function(index, element) { 
     $('body').append($('<div>', { 
      text: element.name 
     })); 
    }); 
}); 

을하거나 데이터를 통해 루프에 $.each() 기능을 사용할 수

$.ajax({ 
    type: 'GET', 
    url: 'http://example/functions.php', 
    data: { get_param: 'value' }, 
    dataType: 'json', 
    success: function (data) { 
     $.each(data, function(index, element) { 
      $('body').append($('<div>', { 
       text: element.name 
      })); 
     }); 
    } 
}); 
+0

이 방법이 더 나은 선택 인 이유에 대해 좀 더 자세히 설명해 주시겠습니까? 나는 별도의 요청으로 데이터를로드하는 데 어떤 이점도 없다. –

+0

또는 jQuery.parseJSON을 사용하는 경우 - jQuery 1.4.1의 새로운 기능이므로 http://api.jquery.com/jQuery.parseJSON/ – liyakat

+0

을 참조하십시오. 왜이 방법을 사용했는지 아직도 명확하지 않습니다. 나는 그 옵션이 있다는 것을 알고 있지만, ** 그것이 ** 더 나은 옵션인지, ** ** 그것이 ** 왜 ** 알고 있는지 알고 싶습니다. –

관련 문제