微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.net MVC下跨域Ajax请求(JSONP)

一、JSONP(JSON with Padding)

  客户端:

<script type="text/javascript">
    function TestJsonp() {
        $.ajax({
            type: "GET",url: "http://localhost/MVC/Books/JsonpTest",dataType: "JSONP",jsonpCallback: "ExecJsonpCallback"
        })
    }

    function ExecJsonpCallback(obj) {
        alert(obj.Name);
    }
</script>

  服务端:

    public class JsonpResult : JsonResult
    {
        public JsonpResult()
        {
            JsonRequestBehavior = JsonRequestBehavior.AllowGet;
        }
        public override void ExecuteResult(ControllerContext context)
        {
            var httpContext = context.HttpContext;
            string callback = context.HttpContext.Request["callback"];
            httpContext.Response.Write(callback + "(");
            base.ExecuteResult(context);
            httpContext.Response.Write(");");
        }
    }
    public class BooksController : Controller
    {
        public ActionResult Jsonptest()
        {
            return new JsonpResult { Data = new { Name = "JSONP" } };
        }
    }

  要点:1.Ajax不能直接取得返回,通过回调函数获得结果;

    2.所有的JSONP请求必须是GET请求,MVC认拒绝AJAX的GET请求,所以需设置JsonRequestBehavior.AllowGet

    3.这是不安全的方式,不要用于敏感信息发送

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐