1

サイドプロジェクトに Goodreads API を使用しようとしていますが、いくつかの問題に直面しています。以下の URL は XML データを返します。使用するdatatype: 'xml'と、クロスドメインエラーが発生するため、「jsonp」を使用しましたが、それでもUncaught SyntaxError: Unexpected token <エラーが発生します。私は間違っていますか?

$.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));
  }
});
4

3 に答える 3

6

CORS をサポートする外部プロキシを使用して、goodreads リクエストを作成します。

少なくとも Yahoo YQL は、このサンプル コードで行われているように、プロキシとして使用できます (無料で、API キーは必要ありません!)。YQL は Goodreads XML 応答を でラップして返します/query/results

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

于 2014-03-09T11:27:45.350 に答える
0

代わりに「application/xml」を使用してみてください。

于 2012-05-01T14:44:57.697 に答える
-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) Goodreads サーバーから応答を得ているように見えますが、期待どおりの結果が得られていることを確認するために、次のことも試してみてください。

dataType: 'text'

データを解析せずに console.log() するだけです。

于 2012-05-01T16:16:20.053 に答える