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跨域获取数据的更多相关文章

  1. jsonp跨域获取数据小解

    jsonp跨域获取数据小解 由于浏览器有同源策略,所以要想获取非同源(协议,域名,端口三者有一不同都算非同源)的页面的数据,就得进行跨域 (1) jsonp原理 由于script标签的src属性可以访 ...

  2. jsonp跨域获取数据实现百度搜索

    本菜鸡最近在写某个页面请求数据时,报了如下的错误. Failed to load https://...:No 'Access-Control-Allow-Origin' header is pres ...

  3. jQuery之ajax的跨域获取数据

    如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型.使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面.服务 ...

  4. 利用location.hash+iframe跨域获取数据详解

    前言 如果看懂了前文利用window.name+iframe跨域获取数据,那么此文也就很好理解了.一样都是动态插入一个iframe,然后把iframe的src指向服务端地址,而服务端同样都是输出一段j ...

  5. 利用window.name+iframe跨域获取数据详解

    详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...

  6. XMLHTTPRequest对象不能跨域获取数据?!

    写了一小段代码,是用XMLHTTPRequest对象来获取数据的,在本地服务器中,运行的很顺利,但是转向实际服务器(实质上就是转向http://gumball.wickedlysmart.com获取一 ...

  7. iframe 跨域问题解决方案 利用window.name+iframe跨域获取数据详解

    详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...

  8. 使用JSONP跨域请求数据

    下面代码,可以使用JSONP进行跨域请求数据,Insus.NET记录以下,以备忘记.

  9. .net mvc 几种跨域获取数据方案

    方案一: 在web.conflg配置文件system.webServer节点中添加以下节点配置 <!--允许 "所有网站" 跨域访问写法:--><httpProt ...

随机推荐

  1. 网页三剑客之CSS

    1.CSS概述 CSS中文简称层叠样式表(英文全称:Cascading Style Sheets),用来控制页面的表现,即使页面更好看的语言. 2.CSS基本语法和页面引用 2.1 css的定义方法 ...

  2. kubernetes云平台管理实战:如何创建deployment更好(九)

    一.文件创建带--record 1.文件 [root@k8s-master ~]# cat nginx_deploy.yml apiVersion: extensions/v1beta1 kind: ...

  3. [物理学与PDEs]第4章第2节 反应流体力学方程组 2.2 反应流体力学方程组形式的化约

    1.  粘性热传导反应流体力学方程组 $$\beex \bea \cfrac{\rd \rho}{\rd t}&+\rho \Div{\bf u}=0,\\ \cfrac{\rd Z}{\rd ...

  4. A Basic Course in Partial Differential Equations

    A Basic Course in Partial Differential Equations, Qing Han, 2011 [下载说明:点击链接,等待5秒, 点击右上角的跳过广告后调至下载页面, ...

  5. LINUX 常用命令(一)

    1.LINUX系统常用命令实例: A0 LINUX命令分内置命令和非内置命令! 一般而言,内置命令就是指在/bin ./usr/bin下系统默认的命令! 非内置命令需要加上命令的绝对路径执行!比如我们 ...

  6. 使用系统用户登录Oracle

    如果数据库安装不在本机上,@后面加的是服务名或IP地址 如果是sys用户的话,它具有管理员的权限,要使用sysdba或sysoper权限来登录oracle工具.

  7. python数据结构之堆(heap)

    本篇学习内容为堆的性质.python实现插入与删除操作.堆复杂度表.python内置方法生成堆. 区分堆(heap)与栈(stack):堆与二叉树有关,像一堆金字塔型泥沙:而栈像一个直立垃圾桶,一列下 ...

  8. codeblocks添加编译选项

    -std=c++0x

  9. keepalived健康检查方式【转】

    keepalived具有很强大.灵活的后端检测方式,其具有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK 几种健康检测方式 ,在分别介绍各种检测方式之 ...

  10. Tomcat zabbix监控、jmx监控、zabbix_java_gateway

    几种方式监控tomcat,如标题. 下面就是参考的网上的连接.自己可以试一下. 由于牵扯到jvm的很多东西, 在这里就只是粘贴处连接参考. http://www.cnblogs.com/chrisDu ...