the*_*nni 8 ajax jquery types jsonp
希望这个头衔不是太神秘.发生的事情是我有一个jQuery AJAX脚本,我试图用来访问远程服务器上的API,它返回一个JSON响应.但是,API将JSON作为MIME类型"text/html"(在响应头中)而不是"application/json"返回.很明显,我只需要将返回的内容类型从文本更改为JSON,以使AJAX调用正确地解释数据.
不幸的是,这种情况并非如此.我已经以多种不同的方式尝试过这种方式,但都失败了.我最接近让这个API调用工作的是调试器告诉我"资源被解释为脚本但是使用MIME类型text/html传输".并且AJAX调用错误输出我的调试消息以jSON格式转储jqXHR对象,这告诉我:{"readyState":4,"status":200,"statusText":"parsererror"}
这是我的代码的一个示例(虽然我已经多次改变了代码,但是我试图让它工作,但这个版本似乎最接近正确):
$.ajax({
type: 'GET',
url: 'http://username:api-key@www.kanbanpad.com/api/v1/projects.json',
contentType: 'application/json',
dataType: 'jsonp',
converters: {
'jsonp': jQuery.parseJSON,
},
success: function(data) {
alert(data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(JSON.stringify(jqXHR));
console.log(textStatus+': '+errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
如果有人能够弄清楚我需要采取哪些不同的方式来完成这项工作,我将非常感激.
值得注意的是,如果您将API URL复制/粘贴到浏览器地址栏并按下go,它会使用正确的响应头("application/json")提供正确的JSON响应
所以除非 Kanbanpad 更新他们的 API,否则无法直接用 JS 访问。您将必须使用 PHP(或其他一些)来处理请求。
它的效果也很好,只需要一个额外的步骤即可。
仅供任何正在寻找解决方案的人使用。