为啥我的 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类型跨域请求数据、始终获取不到返回数据呢