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 ...
随机推荐
- 网页三剑客之CSS
1.CSS概述 CSS中文简称层叠样式表(英文全称:Cascading Style Sheets),用来控制页面的表现,即使页面更好看的语言. 2.CSS基本语法和页面引用 2.1 css的定义方法 ...
- kubernetes云平台管理实战:如何创建deployment更好(九)
一.文件创建带--record 1.文件 [root@k8s-master ~]# cat nginx_deploy.yml apiVersion: extensions/v1beta1 kind: ...
- [物理学与PDEs]第4章第2节 反应流体力学方程组 2.2 反应流体力学方程组形式的化约
1. 粘性热传导反应流体力学方程组 $$\beex \bea \cfrac{\rd \rho}{\rd t}&+\rho \Div{\bf u}=0,\\ \cfrac{\rd Z}{\rd ...
- A Basic Course in Partial Differential Equations
A Basic Course in Partial Differential Equations, Qing Han, 2011 [下载说明:点击链接,等待5秒, 点击右上角的跳过广告后调至下载页面, ...
- LINUX 常用命令(一)
1.LINUX系统常用命令实例: A0 LINUX命令分内置命令和非内置命令! 一般而言,内置命令就是指在/bin ./usr/bin下系统默认的命令! 非内置命令需要加上命令的绝对路径执行!比如我们 ...
- 使用系统用户登录Oracle
如果数据库安装不在本机上,@后面加的是服务名或IP地址 如果是sys用户的话,它具有管理员的权限,要使用sysdba或sysoper权限来登录oracle工具.
- python数据结构之堆(heap)
本篇学习内容为堆的性质.python实现插入与删除操作.堆复杂度表.python内置方法生成堆. 区分堆(heap)与栈(stack):堆与二叉树有关,像一堆金字塔型泥沙:而栈像一个直立垃圾桶,一列下 ...
- codeblocks添加编译选项
-std=c++0x
- keepalived健康检查方式【转】
keepalived具有很强大.灵活的后端检测方式,其具有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK 几种健康检测方式 ,在分别介绍各种检测方式之 ...
- Tomcat zabbix监控、jmx监控、zabbix_java_gateway
几种方式监控tomcat,如标题. 下面就是参考的网上的连接.自己可以试一下. 由于牵扯到jvm的很多东西, 在这里就只是粘贴处连接参考. http://www.cnblogs.com/chrisDu ...