4

Web サイト (特に Yummly) からいくつかの API データを取得しようとしていますが、JSONP 要求を実行しようとすると JSON データを受け取るように見えます。これにより、「Uncaught SyntaxError: UnexpectedToken:」が発生します。

これを行おうとするコードは次のとおりです。

var keywords = $('#input-text').val();
var url = "http://www.yummly.com/api/recipesq="+keywords+"&_app_id=<snipped-app-id>&_app_key=<snipped-api-key>&";
 $.ajax({                                                                            
      type: 'GET',
       url: url,
       dataType: 'jsonp',
       //dataType: 'jsonp json'
       success: function() { console.log('Success!'); },
       error: function(data, data2) { console.log(data); },
       //jsonp: false,
       //jsonpCallback: 'recipeGet'                                          
  });
});

dataType をオーバーロードして JSONP から JSON に変換しようとしましたが、上記と異なる結果にはなりませんでした。コールバック関数も変更しようとしましたが、構文エラーを受け取ったときに関数に行きません。JSONP を使用せず、JSON のみを使用すると、「XMLHttpRequest は Origin を読み込めません。Access-Control-Allow-Origin では許可されていません。」というメッセージが表示されます。

何か助けていただければ幸いです。私はこれにかなり苦労してきました。

4

1 に答える 1

9

私は Yummly API を担当する開発者の 1 人です。

Yummly API は JSONP をサポートしています (ドキュメントでその方法が説明されています) が、リクエストにはいくつかの問題があります。

  1. API URL は

    http://api.yummly.com/v1/api/recipes (http の後のスペースを削除してください)

  2. 「?」があるはずです。/recipes と q の間 (q はパラメーター、/v1/api/recipes はパス)

  3. 次に、JSONP 呼び出しで通常どおりコールバック パラメータを渡すことができます (上記で使用しているように dataType: 'JSONP' を指定した $.ajax が機能するはずです)。

最後に、app_key は秘密です。Stack Overflow などの公開サイトには公開しないでください。取り消しました。https://developer.yummly.comにアクセスして、新しいものを生成してください。

于 2012-11-20T01:12:37.870 に答える