2012-05-01 3 views
1

내 sideproject에 대해 Goodreads API를 사용하려고하지만 일부 문제에 직면하고 있습니다. 아래 URL은 XML 데이터를 반환합니다. 내가 datatype: 'xml'을 사용하면 크로스 도메인 오류가 발생하고 왜 'jsonp'를 사용했는지 알 수는 있지만 여전히 Uncaught SyntaxError: Unexpected token < 오류가 발생합니다. 내가 잘못하고 있니?XML에서 Goodreads API의 응답을 구문 분석하는 방법은 무엇입니까?

$.ajax({ 
    url : 'http://www.goodreads.com/user/show/userid.xml?key=developerKey&id=userId, 
    method : 'get', 
    dataType : 'jsonp', 
    success : function (data) { 
    console.log($.parseXML(data)); 
    } 
}); 
+0

여기 [하나 개의 가능한 솔루션 (http://weedygarden.net/2011/01/consuming-remote-xml-as-jsonp/). –

+0

@MichaelMior : 행운이 없습니다. "Origin Null은 Access-Control-Allow-Origin이 허용하지 않습니다." –

+0

도메인에서 프록시 스크립트가 실행 중이기 때문에 이런 일이 발생할 수 없습니다. 이 경우 동일한 도메인에 대해 정기적 인 JSON 요청 만하면됩니다. –

답변

0

대신 'application/xml'을 사용해보십시오.

+0

행운이 없습니다. "Origin Null은 Access-Control-Allow-Origin이 허용하지 않습니다." –

-1

(1) 크로스 도메인 오류 메시지는 귀하의 앱이 Goodreads에 대해 올바르게 인증되지 않았 음을 나타냅니다.

url : 'http://www.goodreads.com/user/show/userid.xml?key=developerKey&id=userId, 

에는 닫는 따옴표가 없으므로 쿼리 문자열의 변수를 평가하지 않습니다. 나는 당신이 의미를 가지고

url : 'http://www.goodreads.com/user/show/userid.xml?key=' + developerKey + '&id=' + userId, 

당신이 굿 리즈 서버의 응답을 받고,하지만 당신은 또한 당신이 기대하는 무언가지고 있는지 확인하기 위해 시도 할 수 있습니다처럼 (2) 같습니다

dataType: 'text' 

그리고 구문 분석하지 않고 console.log() 만 사용하십시오.

+0

행운이 없습니다. "Origin Null은 Access-Control-Allow-Origin이 허용하지 않습니다." –

3

CORS를 지원하는 외부 프록시을 사용하여 goodreads 요청을합니다.

최소한 YQL을 프록시로 사용할 수 있습니다 (무료이며 API 키는 필요하지 않습니다!). YQL은 /query/results 안에 래핑 된 Goodreads XML 응답을 반환합니다. 이 응답에 대한 YQL

var url = "http://www.goodreads.com/user/show/userid.xml" + 
      "?key=developerKey&id=userId"; 

$.get("http://query.yahooapis.com/v1/public/yql", 
    { 
     q: "select * from xml where url=\""+url+"\"", 
     format: "xml" 
    }, 
    function(xml){ 
     // contains XML with the following structure: 
     // <query> 
     // <results> 
     //  <GoodreadsResponse> 
     //  ... 
     console.log(xml); 
    } 
); 

더 : https://stackoverflow.com/a/8579158/1068385

관련 문제