博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用mvc3实现ajax跨域
阅读量:6674 次
发布时间:2019-06-25

本文共 3843 字,大约阅读时间需要 12 分钟。

ajax跨域一般两种方式   1:cors,2:jsonp,

1:cors

jsonp是get形式,承载的信息量有限,所以信息量较大时CORS是不二选择

在请求消息头添头 Access-Control-Allow-Origin  , 值可以为指定域名,也可以为*表示允许所有域名跨域仿问

mvc代码

public ActionResult Jump(){    Response.AddHeader("Access-Control-Allow-Origin","*");  //对请求方域名没有要求    //Response.AddHeader("Access-Control-Allow-Origin","http://www.baidu.com");   只请允许百度对其进行跨域仿问    return View();           }
View Code

 

客户端使用正常的jquery.ajax就可以调用此方法了。

 

2:jsonp

mvc3代码

实现类

public class JsonpResult : JsonResult    {        public JsonpResult()        {            JsonRequestBehavior = JsonRequestBehavior.AllowGet;        }        public string Callback { get; set; }                ///        ///对操作结果进行处理        ///        ///
public override void ExecuteResult(ControllerContext context) { var httpContext = context.HttpContext; var callBack = Callback; if (string.IsNullOrWhiteSpace(callBack)) callBack = httpContext.Request["callback"]; //获得客户端提交的回调函数名称 // 返回客户端定义的回调函数 var js = new System.Web.Script.Serialization.JavaScriptSerializer(); httpContext.Response.Write(callBack + "("); httpContext.Response.Write(js.Serialize(Data)); //Data 是服务器返回的数据 httpContext.Response.Write(");"); //将函数输出给客户端,由客户端执行 } } ///
/// jsonp扩展方法 /// public static class ContollerExtensions { ///
/// /// ///
///
///
///
public static JsonpResult Jsonp
(this Controller controller, T data) { JsonpResult result = new JsonpResult() { Data = data, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; return result; } ///
/// /// ///
///
///
///
更改后的回调函数名 ///
public static JsonpResult Jsonp
(this Controller controller, T data,string callback) { JsonpResult result = new JsonpResult() { Callback=callback, Data = data, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; return result; } }
View Code

控制器

///         ///         ///         /// 传入参数        /// 
public ActionResult Jump(string parameters) { //以下返回方式都可以,在客户端接收json格式数据 return this.Jsonp(""); return this.Jsonp(new { success = true, message = "" }); return this.Jsonp
<类名>
(类对象); return this.Jsonp(类对象); } ///
/// /// ///
///
更改后的回调函数名 ///
public ActionResult Jump(string parameters, string updatecallback) { //以下返回方式都可以,在客户端接收json格式数据 return this.Jsonp("", updatecallback); return this.Jsonp(new { success = true, message = "" }, updatecallback); return this.Jsonp
<类名>
(类对象, updatecallback); return this.Jsonp(类对象, updatecallback); }
View Code

 

客户端ajax

$.ajax({            type: "GET",            url: 请求地址,            data:请求数据,            dataType: "jsonp",    //必须注明数据格式是jsonp            success: function (result) {                alert(result.message);            }        });$.ajax({            type: "GET",           url: 请求地址,            data:请求数据,            dataType: "jsonp",    //必须注明数据格式是jsonp            jsonp: "updatecallback",  //修改回调函数名称                       success: function (result) {                alert(result.message);            }        }
View Code

 

end

转载于:https://www.cnblogs.com/fengmazi/p/4313008.html

你可能感兴趣的文章
【外文翻译】使用Timer类去调度任务 ——java
查看>>
关于CountDownLatch控制线程的执行顺序
查看>>
plsql 乱码 注册表 修改文件
查看>>
Docker集群管理(三)—— docker swarm mode基础教程
查看>>
1.urlencoder和urldecoder的使用
查看>>
web移动端布局方式整理
查看>>
蛤玮学计网 -- 简单的判断ip
查看>>
如何解决div里面img图片下方有空白的问题?
查看>>
P3626 [APIO2009]会议中心
查看>>
防火墙
查看>>
Ubuntu下VIM使用指南
查看>>
QTREE5 - Query on a tree V——LCT
查看>>
spring mvc-使用Servlet原生API作为参数
查看>>
第13章 MySQL数据库与JDBC编程
查看>>
百度地图API使用记录
查看>>
linux docker
查看>>
增量式 爬虫
查看>>
第九周作业
查看>>
CefSharp的一些初始化操作
查看>>
使用Git Hooks实现开发部署任务自动化
查看>>