使用 JSONP 和 JQuery 调用 REST Api

Posted

技术标签:

【中文标题】使用 JSONP 和 JQuery 调用 REST Api【英文标题】:Calling REST Api with JSONP & JQuery 【发布时间】:2012-11-01 22:23:13 【问题描述】:

我在 MVC4 中创建了 REST API,当我编写来自提琴手的请求时它工作正常。但在我的应用程序中,我需要通过 jsonp 调用,因为它会跨域请求。但是当我调用这个服务时,它给了我如下所示的错误:

Jquery JsonP 调用 ..

$.ajax(
        type: "POST" ,
        url: "http://127.0.0.1:81/api/sites/GetDomainAvailability?apikey=asfasfdsf&callback=?",
        data:  SubDomain: subDomain, ParentDomain: parentDomain, ResellerId: resellerId ,
        cache: false,
        contentType: "application/json; charset=utf-8",
        success: function (response) 
            if (callback)
                callback(response.d);
        ,
        error: function (response) 
            if (callback)
                error(response.d);
        ,
    );

错误:

【问题讨论】:

也许这会有所帮助:***.com/questions/5241088/… 【参考方案1】:

现在你没有做 JSONP。它仍然是 POST 请求。要使其成为 JSONP,您只需将 dataType: "jsonp" 添加到您的 $.ajax() 调用中。您还可以删除一些其他冗余参数,如内容类型和“回调”参数(但这是可选的)。因此,您的代码应如下所示:

$.ajax(
    url: "http://127.0.0.1:81/api/sites/GetDomainAvailability?apikey=asfasfdsf",
    data:  SubDomain: subDomain, ParentDomain: parentDomain, ResellerId: resellerId ,
    datatype: "jsonp",
    cache: false,
    success: function (response)  /* ... */ ,
    error: function (response)  /* ... */ ,
);

也要做好准备,您的请求将被转换为 GET 请求,并且看起来像 /GetDomainAvailability?apikey=key&callback=jquery123&SubDomain=sss&ParentDomain=ppp&ResellerId=123&_=4398572349857

因此,为此准备您的服务器端代码。

【讨论】:

以上是关于使用 JSONP 和 JQuery 调用 REST Api的主要内容,如果未能解决你的问题,请参考以下文章

Angular JSONP 调用 WordPress JSON REST API

使用jquery jsonp返回错误回调函数没有被调用

如何使用 jquery 对 api 进行 jsonp 调用

为啥我的 REST API 客户端需要 JSONP 请求?

Jquery成功函数未使用JSONP触发

使用 jQuery jsonp 跨域调用到 ASP.NET Web 服务