jQuery AJAX JSON dataType转换

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响应

the*_*nni 1

所以除非 Kanbanpad 更新他们的 API,否则无法直接用 JS 访问。您将必须使用 PHP(或其他一些)来处理请求。

它的效果也很好,只需要一个额外的步骤即可。

仅供任何正在寻找解决方案的人使用。