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 ...
随机推荐
- RubyMine 2017.3.2破解教程
下载地址:http://www.3322.cc/soft/35519.html RubyMine 2017.3.2破解版是一款专为Ruby和Rails开发者准备的IDE(被誉为最智能的Ruby和Rai ...
- jQuery使用(十三):工具方法
proxy() onConflict() each() map() parseJson() makeArray() proxy() $.proxy()的实现机制与原生javaScript中的bind( ...
- sqlalchemy查询结果类型简析
Sqlalchemy的查询方式有很多种,例如可以查询全部,可以查询符合条件的,可以查询指定字段的.那么这么多种查询,返回的结果是不是一样的呢?作本文记录分析结果. Sql_forengin.py #c ...
- Centos7下安装Docker
1.首先卸载旧版: yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ ...
- oldboy s21day09
#!/usr/bin/env python# -*- coding:utf-8 -*- # 1.将函数部分知识点,整理到自己笔记中.(搞明白课上讲的案例.) # 2.写函数,检查获取传入列表或元组对象 ...
- Elasticsearch6.3.2启动过程源码阅读记录
Elasticsearch6.3.2启动过程源码阅读记录 网上有很多关于es的源码分析,觉得自己技术深度还不够,所以这些文章只是看源码过程中的一个笔记,谈不上分析. 整个启动过程以类名.方法名,按顺序 ...
- 学习WPF
http://www.cnblogs.com/prism/archive/2010/07/21/1781855.html 如何在WPF中画三角,以及把按钮设置成颜色渐变的样式:
- python3 使用pip安装(命令行中)失败或 “not a supported wheel” 解决方案!
原因1: 安装的不是对应python版本的库,下载的库名中cp36代表python3.6,其它同理. 原因2:(我遇到的情况----下载的是对应版本的库,然后仍然提示不支持当前平台) 百度了一下,说法 ...
- Codeblock代码提示自动补全(包括结构体成员)
转:https://blog.csdn.net/haibin8473/article/details/79113650
- WSL用xshell连接
编辑配置文件 sudo vim /etc/ssh/sshd_config Port 8022(因为 Windows 10 的 SSH 端口已经默认被占用,所以我换成了一个新的端口) (去掉前面的 #) ...