2012-09-25 5 views
3

저는 개발자가 아니지만 복사/붙여 넣기가 잘되어 있습니다.Javascript에서 Google 위치 찾기 JSON 구문 분석 (PHP 제외)

웹 페이지 (JavaScript)에서 Google 위치 찾기 JSON (https://latitude.google.com/latitude/apps/badge/api?user=xxxxxxxxxxxxxxxxx&type=json)을 구문 분석하려고합니다. PHP 없이도 가능합니까? 그렇다면 예제 코드를 보여줄 수 있습니까?

나는 찾고 있었지만 모든 예제는 PHP를 사용했다. 당신이 잘못된 URL을 사용하는 것처럼

3 requests ❘ 21.38KB transferred ❘ 470ms (onload: 448ms, DOMContentLoaded: 448ms) 
104ms157ms209ms261ms313ms366ms418ms470ms 
    OPTIONS https://latitude.google.com/latitude/apps/badge/api?&user=xxxxxxxxxxxxxxxx 405   (Method Not Allowed) jquery.min.js:19 
    o.extend.ajax jquery.min.js:19 
    o.extend.get jquery.min.js:19 
    o.extend.getJSON jquery.min.js:19 
    (anonymous function) json.html:12 
    o.extend.ready.o.readyList jquery.min.js:19 
    o.extend.each jquery.min.js:12 
    o.extend.ready jquery.min.js:19 
    (anonymous function) jquery.min.js:19 
    XMLHttpRequest cannot load https://latitude.google.com/latitude/apps/badge/api?&user=xxxxxxxxxxxxxxxxxxxxxx. Origin h ttp://dl.dropbox.com is not allowed by Access-Control-Allow-Origin. 

답변

0

이 보인다 :

<!DOCTYPE html> 
<html> 
<body> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"   type="text/javascript"></script> 
<script type="text/javascript"> 
$(function() { 
// script goes here 

$.getJSON('https://latitude.google.com/latitude/apps/badge/api?&user=xxxxxxxxxxxxxxxxxxx', function(data) { 
alert(data.type); 
}); 
}); 
</script> 
</body> 
</html> 

내가 시도이 코드는 오류를 주었다

는 다음 코드를 사용했다. "user"앞에 "&"을 제거하고 "type"매개 변수를 추가하십시오. https://latitude.google.com/latitude/apps/badge/api?user=xxxxxxxxxxxxxxxxxxx&type=json

사용자 ID는 "-"기호로 시작할 수 있습니다.

또한 dropbox를 호스팅으로 사용하려고 시도한 것처럼 보이지만, 그게 당신이 아약스 요청을하지 못하게합니다. 로컬 드라이브 나 일반 웹 서버에서 html 페이지를로드하십시오.

+1

에 독서 좋을 것. – Zlatko

0

사이트 간 요청이 있습니다.

오류의 마지막 행 참조 : XMLHttpRequest는 https://latitude.google.com/latitude/apps/badge/api?&user=xxxxxxxxxxxxxxxxxxxxxx을로드 할 수 없습니다. Origin htp : //dl.dropbox.com은 Access-Control-Allow-Origin에 의해 허용되지 않습니까?

원본 스크립트는 서버와 같이 한 서버에서 호스팅됩니다. 동일한 도메인의 데이터 만 요청할 수 있습니다. 다른 포트 (http/https)를 사용하더라도 작동하지 않습니다.

this으로 작동시킬 수도 있습니다.

또 다른 가능한 해결책은 YAHOO에서 데이터를 가져오고 결과에 출력을 덤프하는 PHP 스크립트 또는 유사한 것을 서버에 생성하는 것입니다. 그러면 jQuery ajax 호출이 서버에서 사용자의 스크립트를 호출하므로 (크로스 사이트 HTTP 요청이 발생하지 않음)이 방법으로 작동합니다. 좋은 아키텍처는 아닙니다. 특히 부하가 많을 것으로 예상된다면 효과적 일 것입니다.

2

도메인 간 AJAX 요청을하려면 CORS 또는 JSONP 중 하나를 사용해야합니다. 이것은 서버가 지원해야하는 것입니다. Google 위치 찾기가이 기능을 지원하지 않는 것 같습니다. 따라서 서버 측 언어 (예 : PHP)를 사용하여 데이터를 가져와야합니다.

EDIT : PHP를 사용하지 않고 자바 스크립트 만 사용하려는 경우 Yahoo's YQL (API 키가 필요할 수도 있음)을 사용할 수 있습니다.

var googleURL = 'https://latitude.google.com/latitude/apps/badge/api?user=xxxxxxxxxxxxxxxxx&type=json'; 
$.getJSON('http://query.yahooapis.com/v1/public/yql?callback=?', { 
    q: 'select * from json where url="'+googleURL+'"', 
    format: 'json' 
}, function(data) { 
    if(data.query.count){ 
     var gData = data.query.results.json; 
     alert(gData.type); 
    } 
}); 
0

당신은 JSON을 구문 분석 할 필요가 없습니다, $.getJSON 당신을 위해 그렇게하고 다시 자바 스크립트 객체를 제공 할 것입니다. 귀하의 오류는 JSON 자체와 관련이 없습니다. 브라우저 보안 정책에 의해 차단되고있는 사이트 간 요청을 시도하고 있습니다.나는 JSONP

http://json-p.org/

건배 그가 올바른 URL을 가지고 오류 메시지에서

+0

모든 답변에 감사드립니다. 나는 당신의 모든 제안을 고려할 것입니다. – user1698459