菜鸟的 asp.net jsonp简单应用

简单介绍下,jsonp是一种用来进行跨域传输信息的方法,不是json的亲戚。

具体方法如下

客户端:

 1                 $.ajax({
 2                     url: "testPage.aspx",
 3                     jsonp: "callback",
 4                     type: "get",
 5                     dataType: "jsonp",
 6                     data: { "studentCode": "5", "batch": "2001" },
 7                     success: function (result) {
 8                         alert(result.message);
 9                     },
10                     error: function () {
11                         alert("发送失败");
12                     }
13                 });

看起来只是像普通的ajax方法,不过里面加上了回传函数的方法名“jsonp”参数

这是用来用jsonp的形式回传信息用的,jquery会根据这个callback参数取其中的内容。

客户端方法:

        protected void Page_Load(object sender, EventArgs e)
        {
            string studentCode = Request.QueryString["studentCode"];
            string batch = Request.QueryString["batch"];
            string callback = Request.QueryString["callback"];

            var msg = new {message="收到!" };
            string result = new JavaScriptSerializer().Serialize(msg);
            Response.Write(callback+"("+result+")" );
        }

注意在使用jsonp的时候要注意接收 ajax中写好的方法名参数,刚才上面写的是"jsonp:‘callback‘"所以在服务端要取callback

在回传的时候要以  ajax中的jsonp参数+(+结果值+) 的形式返回,

运行一下刚才的网页,会发现jquery会以

testPage?callback=jQuery110207458065936286827_1445175684208&studentCode=5&batch=2001&_=1445175684213 HTTP/1.1

的方式像服务端发送请求,此时jquery已经将callback值写好

callback=jQuery110207458065936286827_1445175684208

这样jsonp就可以正常工作了

注意:

我在刚用ajax的时候没有注意大小写,$.ajax()方法的参数名对大小写还是很敏感的,尤其是dataType,一定要Type大写data小写

否则会不起作用,怎么写都回传的是字符串格式。当时还疑惑为啥别人回传jsonp是json格式 result.message就可以取值了,而我写的

jsonp返回来的是callback(result:message),当时就是写的datatype的结果。

注意返回值一定是json格式,并且在断点调试的时候 获得的jsonp参数值也就是上面的callback,一定能够取到值类似"jQuery110207458065936286827_1445175684208",而不是 null,如果是null 那么说明你的ajax方法写的有问题,赶紧去贴个

方法再试试,否则会走很多弯路。

时间: 2024-10-18 14:17:11

菜鸟的 asp.net jsonp简单应用的相关文章

【初学菜鸟作--邮件服务的简单配置案例】

邮件服务器的配置以及使用 实验一:                    实验目的:简单搭建出邮件服务器并测试其可用性                    实验环境:DNS服务器一台,安装有Portfix的邮件服务器一台 实验步骤: 一.邮件的发送(SMTP) 1.在邮件服务器配置主机名,ip,并安装portfix并启动 [[email protected]~]# tail -2 /etc/sysconfig/network HOSTNAME=mail.tarena.com   [[email

【转】Asp.Net MVC3 简单入门详解过滤器Filter

原文地址:http://www.cnblogs.com/boruipower/archive/2012/11/18/2775924.html 前言 在开发大项目的时候总会有相关的AOP面向切面编程的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中不想让MVC开发人员去关心和写类似身份验证,日志,异常,行为截取等这部分重复的代码,那我们可以通过AOP截取实现,而在MVC项目中我们就可以直接使用它提供的Filter的特性帮我们解决,不用自己实现复杂的AOP了. 在Asp.net Mvc

【转】ASP.NET Cookies简单应用 记住用户名和密码

不要试图给Password类型的TextBox赋值! 在asp.net中,不要试图给Password类型的TextBox控件赋值! 无论是在设计或是运行时,都不可以的.猜测的原因是,password类型的TextBox控件从根本上,没有Text属性的Set方法,只有Get !!同样,html中的Input控件,如果设置为ruanat="server",password类型的Input控件也是一样.无论是在设计或是运行时,都不容许设置它的值. 解决办法:txtPassword.Attri

用Asp.net实现简单的文字水印

用Asp.net实现简单的文字水印  经常看见MOP上有人贴那种动态的图片,就是把一个字符串作为参数传给一个动态网页,就会生成一个带有这个字符串的图片,这个叫做文字水印.像什么原来的熊猫系列,还有后来的大树和金条,都挺有意思.这东西看着挺好玩的,想做个玩玩.查了查资料,发现用.net来做这个是很容易的,就用Asp.net写了一个非常简单的.全部的代码如下: <%@ Import Namespace="System" %> <%@ Import Namespace=&q

Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter

前言 前面两篇写的比较简单,刚开始写这个系列的时候我面向的对象是刚开始接触Asp.Net MVC的朋友,所以写的尽量简单.所以写的没多少技术含量.把这些技术总结出来,然后一简单的方式让更多的人很好的接受这是我一直努力的方向.后面会有稍微复杂点的项目!让我们一起期待吧! 此文我将跟大家介绍一下Asp.Net MVC3 Filter的一些用法.你会了解和学习到全局Fileter,Action Filter等常用用法. 第一节:Filter知识储备 项目大一点总会有相关的AOP面向切面的组件,而MVC

asp.net mvc简单分页实例

@{ ViewBag.Title = "Index"; } @{ int pageIndex = (int)ViewBag.CurrentPage; int pageCount = (int)ViewBag.Pages; } <h2>Index</h2> <table> <tr> <th>cateId</th> <th>cateName</th> <th>cateNote<

[MVC.NET] Asp.Net MVC3 简单入门第一季

转自:http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2208042.html 初识Asp.Net MVC2.0 初识Asp.Net MVC2.0[续] Asp.Net MVC2.0 Url 路由入门---实例篇 Asp.Net MVC2.0 Url 路由入门 Asp.Net MVC3 简单入门第一季(一)环境准备 Asp.Net MVC3 简单入门第一季(二)详解Asp.Net MVC3项目 Asp.Net MVC3 简单入门第一季(三

Asp.Net SignalR - 简单聊天室实现

原文:Asp.Net SignalR - 简单聊天室实现 简单聊天室 使用持久链接类我们就可以做一些即时通讯的应用了,我使用Group做了一个简单的聊天室,先上图技术细节下面再讲 可以加入聊天室.创建聊天室.发送消息,下面就说说我是如何通过Group做出来的 持久链接类有一个Groups的对象,通过这个对象,我们可以进行分组添加人员.发送消息.删除人员等操作 在连接事件中,给当前游客指定随机名称,并且返回当前已有的聊天室信息 protected override Task OnConnected

ASP.NET Razor简单的表单提交处理的代码

如下内容段是关于ASP.NET Razor简单的表单提交处理的内容. <!DOCTYPE html><html> <body> br/>@{if (IsPost){ string companyname = Request["CompanyName"]; string contactname = Request["ContactName"]; <p>You entered: <br> Company