如果jQuery认为它正在接收JSONP请求,我该如何解释JSON?

时间:2012-11-20 00:05:09

标签: javascript jquery ajax json jsonp

我正在尝试从网站(特别是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时我收到了一个&#34; XMLHttpRequest无法加载Origin-Control-Allow-Origin不允许使用Origin。&#34;。

任何帮助都会受到赞赏,我一直在努力解决这个问题。

1 个答案:

答案 0 :(得分:9)

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

Yummly API支持JSONP(documentation解释了如何),但您的请求存在一些问题。

  1. API网址应为

    http://api.yummly.com/v1/api/recipes(删除http后的空格)

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

  3. 然后你可以像往常一样通过JSONP调用传递一个回调参数($ .ajax和dataType:'JSONP'就像你上面使用的那样工作)
  4. 最后,你的app_key是秘密的。请不要在Stack Overflow等公共网站上发布。我已将其撤消,请转到https://developer.yummly.com以生成新的。