为啥我的 Ajax 请求包含数据类型:“jsonp”错误? [复制]

Posted

技术标签:

【中文标题】为啥我的 Ajax 请求包含数据类型:“jsonp”错误? [复制]【英文标题】: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。如果服务器不知道如何提供,你就不能要求它。 有什么不同? 【参考方案1】:

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

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

【讨论】:

以上是关于为啥我的 Ajax 请求包含数据类型:“jsonp”错误? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用jquery的ajax的jsonp类型跨域请求数据、始终获取不到返回数据呢

AJAX jsonp实现过程

带有 jsonp 内容类型的 jQuery.ajax 请求后的解析器错误

ajax请求

JQuery的Ajax跨域请求的

jquery ajax参数