Fork me on GitHub

ASP.NET MVC中实现JSONP

只是了解下新东西,Access-Control-Allow-Origin 不是所以浏览器都支持。
Refer:
跨域资源共享的10种方式:
http://www.woiweb.net/10-cross-domain-methods.html
asp-net-mvc-returning-jsonp: http://stackoverflow.com/questions/758879/asp-net-mvc-returning-jsonp

ajax-cross-origin-http-request : http://www.oschina.net/translate/ajax-cross-origin-http-request

Code:

复制代码
using System.Web.Mvc;
/// <summary>
/// JSONP 跨域
/// </summary>
public class JsonpResult : JsonResult
{
    public string Callback { get; set; }
    public JsonpResult()
    {
        JsonRequestBehavior = JsonRequestBehavior.AllowGet;
    }
    public override void ExecuteResult(ControllerContext context)
    {
        var httpContext = context.HttpContext;
        var callback = Callback;
        if (string.IsNullOrWhiteSpace(callback))
            callback = httpContext.Request["callback"];
        httpContext.Response.Write(callback + "(");
        base.ExecuteResult(context);
        // httpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*");
        httpContext.Response.Write(");");
    }
}

  // GET: /Jsonp/
        public ActionResult Index()
        {
            var user = new { Name = "Irving", Age = "23" };
            return new JsonpResult {Data = user };
        }
复制代码

XML配置

复制代码
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
复制代码

JS

复制代码
@{
    ViewBag.Title = "Test CrossDomain";
}
<h2>
    Test</h2>
@section scripts{
    <script type="text/javascript">
        $(function () {
            $.ajax({
                type: "GET",
                url: "http://localhost:89/Jsonp/Index",
                dataType: "jsonp",
                success: function (result) {
                    console.log(result);
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    console.log("Error: " + errorThrown);
                }
            });
        });
        //测试WCF跨域
        $(function () {
            $.ajax({
                type: "GET",
                url: "http://172.23.100.99/HotelService/Rest/GetAllPriceAndRmFlow/800822/2345678976543456789/2013-12-10/2013-12-11/0210B6/JSON",
                dataType: "jsonp",
                success: function (result) {
                    console.log(result);
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    console.log("Error: " + errorThrown);
                }
            });
        });
    </script>
}
复制代码
posted @   花儿笑弯了腰  阅读(695)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示