9

有谁知道JSONP.net 4.5 ASP.NET WEB API 是否支持开箱即用的返回?

我为早期版本或 .net 找到了很多“自己动手”,MVC但似乎没有特定于更高版本的任何内容。

我意识到这可能是因为它们的早期版本可以与 .net 4.5 堆栈一起使用,但我很好奇是否有人已经加入。

4

4 回答 4

13

据我所知,您必须获得 jsonp 格式化程序。这是其中一种实现:

http://nuget.org/packages/WebApi.JsonP

更新

WebApiContrib 团队现在提供推荐的软件包:

https://www.nuget.org/packages/WebApiContrib.Formatting.Jsonp

在应用程序启动时将其添加到 Global.asax:

GlobalConfiguration.Configuration.Formatters.Insert(0,  new JsonpMediaTypeFormatter(new JsonMediaTypeFormatter()));

可以在此处找到使用 jquery 的示例

于 2013-06-27T06:39:54.603 回答
3

这是我发现的第一篇文章,也是最有帮助的,但它仍然留下了一些问题,我发现一些答案存在一些问题,虽然由于所有答案,我能够使其工作,但我想添加什么我之所以知道是因为它在搜索返回中似乎很高。
我安装了https://www.nuget.org/packages/WebApiContrib.Formatting.Jsonp并且在我添加后能够让它工作

GlobalConfiguration.Configuration.Formatters.Insert(0,  new JsonpMediaTypeFormatter(new JsonMediaTypeFormatter()));

到我的 Global.asax 上的应用程序 startas Alex Wheat 和 mbudnik 回答说,它导致 CORS 停止处理我的 API 的其他部分,这些部分已经全部实现。

我现在一切正常,并从包开发人员的 github 中找出了一些东西。

安装 nuget 包后,将以下内容添加到 Global.asax 文件中

GlobalConfiguration.Configuration.AddJsonpFormatter();

那么如果您使用下面的 Jquery 调用该服务,只需将 url 替换为您的 url,您就可以在控制台中看到结果。我还建议安装 Fiddler Web Debugger,因为它可以帮助您进行故障排除。

$.ajax({
    url: 'http://jsfiddle.net/echo/jsonp/',
   type: 'GET',
    contentType: 'text/javascript',
    crossDomain: true,
    success: function(data) {
        console.log(data);
    },
    error: function(jqXHR,status,error) {
    console.log(error);
    }
});

contentType : 'text/javascript'很重要。这就是告诉 web api 使用 Jsonp Formatter 的原因。

不要包含“jsonp”的数据类型 - 下面的示例

     ...type: 'GET',
    dataType: 'jsonp',
    crossDomain: true,... 

这将导致 web api 使用 JsonMediaTypeFormatter,您将收到“jQuery randomfunctionstring was not called parsererror”错误。我从个人的反复试验中知道这一点。希望这对其他人有帮助。

于 2015-11-03T22:01:53.770 回答
2

I like this WebApiContrib.Formatting.Jsonp NuGet package

Add this formatter into Application_Start:

GlobalConfiguration.Configuration.Formatters.Insert(0, new JsonpMediaTypeFormatter(new JsonMediaTypeFormatter()));
于 2014-01-10T13:52:02.417 回答
0

我还最终使用了 WebApiContrib.Formating.Jsonp NuGet 包,但如果没有回调参数,则保留了在不填充的情况下重新调整 Json 的能力。

所以只有 Jsonp IF 我提供的回调参数。

通过添加(来自 howTo)到 Global.asax.cs - Application_Start()

GlobalConfiguration.Configuration.AddJsonpFormatter();
于 2015-04-16T13:02:14.587 回答