2012-09-17 3 views
1

작동하지 :JQuery와 JSON 호출 내가 이것을 사용하여 JSON 파일에서 배열을 만들려고하고

<script type="text/javascript"> 
var stores = []; 
$.getJSON('js/locations.json', function(data) { 
    $.each(data, function(key, value) { 
     stores.push("<option value="+key+">"+value+"</option>"); 
    }); 
}); 
</script> 

그러나 배열 내가 그것을 호출 할 때 비어있는 것으로 나타납니다. json 파일은 다음과 같습니다.

{ 
    '1' : 'Store 1', 
    '2' : 'Store 2', 
    '3' : 'Store 3' 
} 

누군가가 내게 왜 작동하지 않는지 가장 알려 주시면 감사하겠습니다. 감사.

+0

값 줄에 디버거 (파이어 버그, 크롬 등)에 중단 점을 넣으면 다시 오는 데이터가 있습니까? –

+2

배열을 언제 호출합니까? 아약스 호출이 끝나기 전에 배열을 호출하는 것 같아요? – simonlchilds

+0

이 보이지 않는 것 – Penguin

답변

0
  1. 인쇄, whatserver 반환. 다음과 같은 것 : console.debug (data);
  2. 다른 json 파일 콘텐츠를 사용해보십시오. 예를 들어이 들어 :

    { "하나": "단수 감각", "이": "Beady 외 작은 눈", "세" "내 문앞에 의해 작은 새 피치"}

행운을 빌어 요 ;-)

+0

다음 오류가 발생합니다 : XMLHttpRequest가 파일을로드 할 수 없습니다 : js/locations.json 출처 : null은 Access-Control-Allow에 허용되지 않습니다. -Origin. – Penguin

+0

다른 서버에서 파일을 가져올 수 없습니다. example.com에서 가져 오는 페이지의 경우 example.com/some_some_some_here.json 페이지에만 ajax 요청을 보낼 수 있습니다. "crossdomain ajax restrictions"참조 – Maxim

+0

Ok 시도해 주셔서 감사합니다 – Penguin

0

아마도 json이 유효하지 않을 수 있습니다. 시도 :

{ "1": "상점 만들기", "2": "상점 2", "3": "Store3" }

작은 따옴표가 두 배로. 작은 따옴표로 jsonlint.com은 유효성을 검사하지 않습니다 ....

+0

여전히 작동하지 않는 것하지만 팁 주셔서 감사합니다 :) – Penguin

0

로컬 json 파일에 액세스하려고하는 위치에 IF가 있습니다. 웹킷 브라우저는 그것을 허용하지 않습니다. 크롬을 --allow-file-access-from-files과 함께 실행 해보세요. 동일한 액세스가 IE 8 이상에서 거부되었습니다. $.getJSON은 Firefox에서 로컬 파일을 읽는 데 문제가 있습니다. 가능한 해결책은이를 통해 가능할 수 있습니다.

var req = new XMLHttpRequest(); 
req.open("GET", "a.json",false); 
req.overrideMimeType("application/json"); 
req.send(null); 
var myJson = req.responseText; 

또는 테스트 목적으로 JS 파일에 JSON을 var로 넣을 수 있습니다.