4

我正在尝试从网站(特别是 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 cannot load Origin is not allowed by Access-Control-Allow-Origin.”。

任何帮助将不胜感激,我一直在努力解决这个问题。

4

1 回答 1

9

我是负责 Yummly API 的开发人员之一。

Yummly API 支持 JSONP(文档解释了如何),但您的请求存在几个问题。

  1. API url 应该是

    http://api.yummly.com/v1/api/recipes(去掉http后面的空格)

  2. 应该有一个“?” /recipes 和 q 之间(q 是参数,/v1/api/recipes 是路径)

  3. 然后,您可以像往常一样使用 JSONP 调用传递回调参数($.ajax with dataType: 'JSONP' like you are using above should work)

最后,您的 app_key 是秘密的。请不要在 Stack Overflow 等公共网站上发布。我已经撤销了,请到https://developer.yummly.com生成一个新的。

于 2012-11-20T01:12:37.870 回答