【问题标题】:Why is my Ajax Request Containing dataType: "jsonp" erroring? [duplicate]为什么我的 Ajax 请求包含数据类型:“jsonp”错误? [复制]
【发布时间】:2021-01-10 04:04:15
【问题描述】:

我有以下 Ajax 调用:

var baseurl = Office.context.mailbox.restUrl;
var getMessageUrl = baseurl + "/v2.0/me/messages/" + rest_id + "?$select=SingleValueExtendedProperties&$expand=SingleValueExtendedProperties($filter=PropertyId eq 'String 0x007D')";


$.ajax({
        url: getMessageUrl,
        dataType: "jsonp",
        headers: {
            "Authorization": "Bearer " + rest_token,
            "Accept": "application/json; odata.metadata=none"
        },
        error: function (xhr, ajaxOptions, thrownError) {
            $('.resultsScore').text(xhr.statusText);
        }
    }).done(function (item) {

但是,这总是会引发错误(总是输入错误函数)。如果我使用 dataType:"json",它工作正常。我究竟做错了什么?为什么不能这样使用jsonp?

【问题讨论】:

  • Accept: application/json 对于 JSONP 不正确。对 JSONP 的响应是 JavaScript,而不是 JSON。
  • 谢谢,巴马尔。但是,如果我执行 dataType: "jsonp" 和 "Accept": "application/json; odata.metadata=none",它仍然会给出错误。有什么想法吗?
  • 大多数 API 不实现 JSONP。如果服务器不知道如何提供,你就不能要求它。
  • 有什么不同?

标签: javascript json ajax jsonp


【解决方案1】:

错误几乎肯定是因为响应不是 JSONP。

可能有几个原因。您调用的服务可能根本不支持它。另外,JSONP请求不支持自定义headers的设置,所以会丢失你的Authorization。

【讨论】:

    猜你喜欢
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2019-05-16
    • 2011-10-22
    • 1970-01-01
    • 2020-04-23
    • 2014-07-06
    相关资源
    最近更新 更多