2012-05-01 6 views
1

私のサイドプロジェクトには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レスポンスを返します。

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); 
    } 
); 
この答えでYQLについて

より: https://stackoverflow.com/a/8579158/1068385

関連する問題