ajax - jQuery AJAX JSON 数据类型转换

标签 ajax jquery types jsonp

希望这个标题不会神秘。发生的情况是我有一个 jQuery AJAX 脚本,我试图用它来访问远程服务器上的 API,该脚本返回 JSON 响应。但是,API 将 JSON 返回为 MIME 类型“text/html”(在响应 header 中)而不是“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);
    }
});

如果有人能弄清楚我需要做些什么来使这项工作成功,我将非常感激。

还值得注意的是,如果您将 API URL 复制/粘贴到浏览器地址栏中并单击“开始”,它会提供带有正确响应 header (“application/json”)的正确 JSON 响应

最佳答案

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

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

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

关于ajax - jQuery AJAX JSON 数据类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345770/

相关文章:

php - 使用 AJAX 和 PHP 动态填充 HTML DropDown 控件

javascript - 是否可以使容器内的元素大于容器?

javascript - 右键单击不使用单击功能的表行

types - 定义 TypeScript 回调类型

java - 在 Wicket 6.0 RefreshingView 示例中更新行时出现问题

ajax - 发出 JSF Ajax 请求时显示加载进度

javascript - jQuery 和 Audio.js : song dynamically added to playlist not playing or recognizing

jquery - 如何在jquery DataTable中打开columnDefs

perl - 匈牙利符号是否适用于 Perl?

haskell - 列表理解和类型问题 (Haskell)