2014-02-12 3 views
0

웹 서버에서 Bitcoin 코스를 얻으려고합니다.jquery 모바일을 사용하여 서버에서 json 데이터를 가져 오는 방법은 무엇입니까?

그런 다음 로컬의 JSON으로 시도해 봅니다. Firebug에서 bitcoincharts.com에 요청을 볼 수 있지만 답변이 없습니다.

내 코드에 어떤 문제가 있습니까?

$('#LitecoinMenue').append('<p><b>Litecoin: 42</b></p>'); 
$.getJSON('http://api.bitcoincharts.com/v1/weighted_prices.json', 
    function(data){ 
    $.each(data.USD, function(index,item){ 
     $('#BitcoinMenue').append('<p><b>Bitcoin:'+ item+'</b></p>'); 
    }); 
}); 

답변

0

코드가 작동하지 않는 이유는 Same-origin policy이라는 규칙 때문입니다. 이 규칙은 모든 AJAX 요청이 동일한 도메인 이름의 파일로 만들어 지도록 요구합니다. $.getJSON 또는 다른 AJAX 함수를 사용하여 외부 도메인에서 파일을로드 할 수 없습니다.

몇 가지 옵션 만 사용할 수 있습니다. 가장 일반적인 방법은 프록시로 작동하도록 PHP 파일을 만들어 동일한 도메인에 저장하는 것입니다.

$('#LitecoinMenue').append('<p><b>Litecoin: 42</b></p>'); 
$.getJSON('proxy.php?url=aHR0cDovL2FwaS5iaXRjb2luY2hhcnRzLmNvbS92MS93ZWlnaHRlZF9wcmljZXMuanNvbg==', 
    function(data){ 
    $.each(data.USD, function(index,item){ 
    $('#BitcoinMenue').append('<p><b>Bitcoin:'+ item+'</b></p>'); 
    }); 
}); 

<?php 
$url = base64_decode($_GET['url']); 
return file_get_contents($url); 
?> 

귀하의 페이지

proxy.php 중요 사항 : 예를 들어

이건 그냥 예입니다. 실제 상황에서는 파일을 가져 오기 위해 cURL을 사용하는 것이 좋습니다. Firebug를 사용하여 AJAX 요청을 전송하여 큰 파일 (예 : 영화)을 가져 오지 못하거나 서버가 다운 될 수 없도록 보안이 유지되는지 확인해야합니다.

보시다시피, URL은 base64로 인코딩되어 있습니다. 이는 인코딩되지 않은 URL을 GET 매개 변수로 전달할 때 문제가 발생할 수 있으므로 올바르게 처리되도록하기위한 것입니다. 다음 온라인 변환기 (http://base64encode.orghttp://base64decode.org)로 base64 문자열을 인코딩하고 디코딩하거나 내장 된 PHP 함수 base64_encode()base64_decode()을 사용할 수 있습니다.

+0

안녕하세요, 귀하의 답변을위한 탱크. jquery 모바일/phonegab 응용 프로그램을 만들려고합니다. 그래서 외부 json을 얻을 수있는 방법은 없습니다. PHP는 불가능합니다. – user3302260

+0

이 답변을 찾으면 도움을 청합니다 (녹색 진드기). –

+0

왜 깜박임에서 고양이 사진을로드 할 수 있고 간단한 json은 impossibile입니까? http://demos.jquerymobile.com/1.0a1/experiments/api-viewer/docs/jQuery.getJSON/index.html – user3302260

관련 문제