asp.net MVC jsonp跨域获取数据
public class JsonpResult : JsonResult
{
object _data = null;
public JsonpResult() { }
public JsonpResult(object data)
{
this._data = data;
}
public override void ExecuteResult(ControllerContext context)
{
if(context != null)
{
HttpResponseBase response = context.HttpContext.Response;
HttpRequestBase request = context.HttpContext.Request;
string callbackFunction = request["callback"];
HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
if(string.IsNullOrEmpty(callbackFunction))
{
throw new Exception("callback function name is empty");
}
response.ContentType = "application/x-javascript";
if(_data != null)
{
string strjson = Newtonsoft.Json.JsonConvert.SerializeObject(_data);
response.Write(string.Format("{0}({1});", callbackFunction, strjson));
}
}
}
}
public class apiController : Controller
{
// GET: api
/// <summary>
/// 登入账号
/// </summary>
/// <returns></returns>
public JsonpResult getUserName()
{
return new JsonpResult(new { name = User.Identity.Name });
}
/// <summary>
/// 是否已经登入,已登入islogin=1,否则为0
/// </summary>
/// <returns></returns>
public JsonpResult isUserLogin()
{
return new JsonpResult(new { islogin = Request.IsAuthenticated ? : });
}
}
client:
<script type="text/javascript">
var hxsso = function (url) {
return {
checkIsLogin: function (callbackfun) {
$.ajax({
url: url + "/api/isUserLogin",
type: "GET",
dataType: "jsonp",
jsonp: "callback",
success: function (data) {
if (callbackfun) {
callbackfun(data.islogin);
}
}
});
},
loginName: function (callbackfun) {
$.ajax({
url: url + "/api/getUserName",
type: "GET",
dataType: "jsonp",
jsonp: "callback",
success: function (data) {
if (callbackfun) {
callbackfun(data.name);
}
}
});
}
}
}
$(function () {
var ssoObj = hxsso("http://192.168.16.241:8520");
//var ssoObj = new hxsso("http://www.2.sso.com");
ssoObj.checkIsLogin(loginOnCallBack);
function loginOnCallBack(islogin) {
var url = "";
if (islogin) {
$("#ploginOut").show();
$("#plogin").hide();
if ("@isLogin" == "0") {//sso已经登入,本地未登入,这就需要本地保存自己的cookie。
ssoObj.loginName(setUserCookie);
}
}
else {
$("#ploginOut").hide();
$("#plogin").show();
if ("@isLogin" == "1") {//sso未登入,本地确已经登入,这就需要注销本地的。
url = "/Home/RemoveUserCookie";
$.ajax({
url: url,
type: "GET",
success: function (data) {
}
});
}
}
}
function setUserCookie(name) {
$.ajax({
url: "/Home/SetUserCookie?name=" + name,
type: "GET",
success: function (data) {
}
});
}
}) </script>
asp.net MVC jsonp跨域获取数据的更多相关文章
- jsonp跨域获取数据小解
jsonp跨域获取数据小解 由于浏览器有同源策略,所以要想获取非同源(协议,域名,端口三者有一不同都算非同源)的页面的数据,就得进行跨域 (1) jsonp原理 由于script标签的src属性可以访 ...
- jsonp跨域获取数据实现百度搜索
本菜鸡最近在写某个页面请求数据时,报了如下的错误. Failed to load https://...:No 'Access-Control-Allow-Origin' header is pres ...
- jQuery之ajax的跨域获取数据
如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型.使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面.服务 ...
- 利用location.hash+iframe跨域获取数据详解
前言 如果看懂了前文利用window.name+iframe跨域获取数据,那么此文也就很好理解了.一样都是动态插入一个iframe,然后把iframe的src指向服务端地址,而服务端同样都是输出一段j ...
- 利用window.name+iframe跨域获取数据详解
详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...
- XMLHTTPRequest对象不能跨域获取数据?!
写了一小段代码,是用XMLHTTPRequest对象来获取数据的,在本地服务器中,运行的很顺利,但是转向实际服务器(实质上就是转向http://gumball.wickedlysmart.com获取一 ...
- iframe 跨域问题解决方案 利用window.name+iframe跨域获取数据详解
详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...
- 使用JSONP跨域请求数据
下面代码,可以使用JSONP进行跨域请求数据,Insus.NET记录以下,以备忘记.
- .net mvc 几种跨域获取数据方案
方案一: 在web.conflg配置文件system.webServer节点中添加以下节点配置 <!--允许 "所有网站" 跨域访问写法:--><httpProt ...
随机推荐
- Java计算文件MD5值(支持大文件)
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.securit ...
- 第六节:WebApi的部署方式(自托管)
一. 简单说明 开篇就介绍过WebApi和MVC相比,其中优势之一就是WebApi可以不依赖于IIS部署,可以自托管,当然这里指的是 .Net FrameWork 下的 WebApi 和 MVC 相比 ...
- web全栈应用【爬取(scrapy)数据 -> 通过restful接口存入数据库 -> websocket推送展示到前台】
作为 https://github.com/fanqingsong/web_full_stack_application 子项目的一功能的核心部分,使用scrapy抓取数据,解析完的数据,使用 pyt ...
- 五十、进程间通信——System V IPC 之共享内存
50.1 共享内存 50.1.1 共享内存的概念 共享内存区域是被多个进程共享的一部分物理内存 多个进程都可把该共享内存映射到自己的虚拟内存空间.所有用户空间的进程若要操作共享内存,都要将其映射到自己 ...
- 在JS中如何判断所输入的是一个数、整数、正数、非数值?
1.判断是否为一个数字: Number(num)不为 NaN,说明为数字 2. 判断一个数为正数: var num=prompt("请输入:"); if(Number(num)&g ...
- 第29月第14天 evpp
1.evpp https://github.com/Qihoo360/evpp/tree/master/examples/recipes/self_control_timer https://blog ...
- 集合各个实现类的底层实现原理 ----- 原文地址:https://blog.csdn.net/qq_25868207/article/details/55259978
ArrayList实现原理要点概括 参考文献: http://zhangshixi.iteye.com/blog/674856l https://www.cnblogs.com/leesf456/p/ ...
- 【译】索引进阶(一):SQL SERVER索引介绍
[译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/7 ...
- linux 乌班图 xshell链接不上服务器
输入 ps -e |grep ssh ,如果没有任何反应则是没有安装 命令 sudo apt-get install openssh-server 然后出现是否同意-Y,同意进行自动下载 如果提示 ...
- Cookie 判断页面是否为第一次打开 包括刷新
$.cookie = function(e, t, n) { if(arguments.length > 1 && (!/Object/.test(Object.prototyp ...