.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.这是不安全的方式,不要用于敏感信息发送

相关文章

$.AJAX()方法中的PROCESSDATA参数 在使用jQuery的$.ajax()方...
form表单提交的几种方式 表单提交方式一:直接利用form表单提...
文章浏览阅读1.3k次。AJAX的无刷新机制使得在注册系统中对于...
文章浏览阅读1.2k次。 本文将解释如何使用AJAX和JSON分析器在...
文章浏览阅读2.2k次。/************************** 创建XML...
文章浏览阅读3.7k次。在ajax应用中,通常一个页面要同时发送...