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

RKu*_*icz 4 javascript ajax jquery 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'                                          
  });
});
Run Code Online (Sandbox Code Playgroud)

我试图通过重载dataType从JSONP转换为JSON,但是这并没有导致与上面不同的结果.我也试过更改回调函数,但是当我收到语法错误时它没有转到函数.当我不使用JSONP并且只使用JSON时,我收到一个,"XML-AccessHadpRequest无法加载Origin-Control-Allow-Origin不允许使用Origin.".

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

小智 9

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

Yummly API支持JSONP(文档说明了如何),但您的请求存在一些问题.

  1. API网址应该是

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

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

  3. 然后你可以像往常一样通过JSONP调用传递一个回调参数($ .ajax和dataType:'JSONP',就像你上面使用的那样)

最后,你的app_key是秘密的.请不要在Stack Overflow等公共网站上发布.我已将其撤消,请访问https://developer.yummly.com以生成新的.

  • 感谢您的回复如此之快!抱歉API密钥,我急于尝试解决这个问题我不认为我应该把它拿出来.看来我的问题是附加'api'.网址后缀.感谢你的帮助! (2认同)
  • 注册回答有关他正在进行的API的问题.顶级Bloke! (2认同)