Javascript 为什么我的Ajax请求包含数据类型:";jsonp“;出错?

Javascript 为什么我的Ajax请求包含数据类型:";jsonp“;出错?,javascript,json,ajax,jsonp,Javascript,Json,Ajax,Jsonp,我有以下Ajax调用: var baseurl = Office.context.mailbox.restUrl; var getMessageUrl = baseurl + "/v2.0/me/messages/" + rest_id + "?$select=SingleValueExtendedProperties&$expand=SingleValueExtendedProperties($filter=PropertyId eq 'String 0x

我有以下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) {

但是,这始终会引发错误(始终输入error函数)。如果我使用数据类型:“json”,它工作得很好。我做错了什么?为什么我不能以这种方式使用jsonp?

错误几乎可以肯定,因为响应不是jsonp


可能有几个原因。您正在调用的服务可能根本不支持它。此外,JSONP请求不支持自定义头的设置,因此您的授权将丢失。

Accept:application/json
对于JSONP不正确。对JSONP的响应是JavaScript,而不是JSON。谢谢,Barmar。但是,如果我使用数据类型:“jsonp”和“Accept”:“application/json;odata.metadata=none”,它仍然会给出错误。有什么想法吗?大多数API都不实现JSONP。如果服务器不知道如何提供,你就不能要求它。这有什么不同?