Jsonp 前后端交互操作
今天,因为项目的需要,研究了一下JSONP,特在此记录一下 ,希望可以帮助那些有疑惑的朋友们,本人也是刚学,高手略过即可。
关于Jsonp的定义就不说了,网上一片,大家可以自己查询。我就在此直接进入正题。
首先,服务器端,我是用的.net 搭建的。下面是代码;
public class LinyangController : Controller
{
//
// GET: /Linyang/
public ActionResult Index()
{
Person person = new Person();
person.age = ;
person.name = "linyang"; String p= JsonConvert.SerializeObject(person); //前天需要获取的json数据 String callback = Request.QueryString["callback"].ToString(); //获取到URL中传递过来的callback中的值 return Content(callback+"("+p+");"); //将获取的值同json数据拼接起来,中间以括号连接。格式:callback中的值+左括号+json数据+右括号。
} }
简单的利用asp.net mvc 框架写的一个action。然后放到服务器上去。具体的解释,咱们待会再说。
客户端,用JSP充当的。利用了Jquery 或 Kissy(淘宝创造的JS框架,超级好用) 发起Ajax 跨域请求。
下面是,客户端代码:
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2014/12/22
Time: 21:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>我是首页</title>
<script src="script/jquery-1.10.2.js"></script>
<script src="http://g.alicdn.com/kissy/k/1.4.7/seed.js" data-config="{combine:true}"></script>
</head> <body>
<button id="cross" >跨域获取值</button> <%--<script>--%>
<%--KISSY.use('io',function(S,IO){--%> <%--new IO({--%>
<%--//type:'get',--%>
<%--url:'http://120.192.31.164:8888/Linyang',--%>
<%--dataType:'jsonp',--%>
<%--jsonp:'callback',--%>
<%--success:function(data){--%>
<%--console.log(data.name);--%>
<%--console.log(data.age);--%>
<%--}--%>
<%--});--%>
<%--});--%>
<%--</script>--%> <script>
$(document).ready(function(){
$('#cross').on('click',function(){
$.ajax({
url:"http://120.192.31.164:8888/Linyang",
dataType:'jsonp',
jsonp:'callback',
success:function(result) {
alert(result.name);
}
});
});
});
</script> </body> </html>
大家可以看到,引入了两个脚本,一个是Jquary,另一个就是Kissy的,经测试,都能用,大家可以试一下。
现在可以具体的说一下了,咱们以Jquary为例,当你dataType声明为jsonp时,在请求的连接口面自动加上callback,当然这个参数名可以自己定义,就是通过jsonp这个属性来定义,这个名字,并不是没有意义的。请大家,注意这段代码:
String callback = Request.QueryString["callback"].ToString();
这是在服务器端,获取参数callback中的值,所以,前端定义的传递的是什么参数,后台就得是什么参数来获取。后台获取之后,放到返回的数据中,作为一个返回数据的“函数名”,前台就可以获取这个“函数名”,从来调用某个具体的函数来处理返回的数据,当然,如果前台不指定函数名,那么Jquary会默认加上一个,就可以使用success,来接受返回的数据。我上面就采用这种方式实现的。
PS:刚开始,一直获取不到,原来是
Content(callback+"("+p+");");
没有加左右括号,也再起提醒一下大家。
Jsonp 前后端交互操作的更多相关文章
- Node之简单的前后端交互
node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学n ...
- Django之META与前后端交互
Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...
- springboot+mybatis+thymeleaf项目搭建及前后端交互
前言 spring boot简化了spring的开发, 开发人员在开发过程中省去了大量的配置, 方便开发人员后期维护. 使用spring boot可以快速的开发出restful风格微服务架构. 本文将 ...
- 百度ueditor的图片上传,前后端交互使用
百度ueditor的使用 一个文本编辑器,看了网上很多文档写的很乱,这里拾人牙慧,整理下怎么使用. 这个东西如果不涉及到图片附件上传,其实很简单,就是几个前端文件,直接引用,然后配置下ueditor. ...
- 【开源.NET】 轻量级内容管理框架Grissom.CMS(第二篇前后端交互数据结构分析)
这是 CMS 框架系列文章的第二篇,第一篇开源了该框架的代码和简要介绍了框架的目的.作用和思想,这篇主要解析如何把sql 转成标准 xml 配置文件和把前端post的增删改数据规范成方便后台解析的结构 ...
- Servlet实现前后端交互的原理及过程解析
在日常调试项目时,总是利用tomcat去启动项目,并进行前后端联调,但对于前后端的请求响应的交互原理及过程并不是特别清晰. 为什么在前端发出相应请求,就能跳转到后端通过程序得到结果再响应到前端页面呢? ...
- nodejs实现前后端交互
本人nodejs入门级选手,站在巨人(文殊)的肩膀上学习了一些相关知识,有幸在项目中使用nodejs实现了前后端交互,因此,将整个交互过程记录下来,方便以后学习. 本文从宏观讲述nodejs实现前后端 ...
- ajax学习----json,前后端交互,ajax
json <script> var obj = {"name": "xiaopo","age": 18,"gender ...
- 微信小程序 + thinkjs + mongoDB 实现简单的前后端交互
说明:这段时间跟老师学习了一下mongodb数据库,这次也是第一次搭建后台服务,出了不少差错,特此来复盘一下,非常感谢对我提供帮助的同学~ 一.使用 thinkjs + mongodb 创建后台服务 ...
随机推荐
- SQL Server 数据类型简介
在 SELECT 的查询过程和查询结果中,每个列.变量.表达式和参数都具有一个相关的数据类型.数据类型用于指定某个对象可保存的数据的类型. SQL Server系统的数据类型主要有:数值类型.日期和时 ...
- 20141128—JavaScript对象
JavaScript 中的所有事物都是对象:字符串.数值.数组.函数... String 对象的 length 属性来获得字符串的长度: var message="Hello World!& ...
- 【leetcode】368. Largest Divisible Subset
题目描述: Given a set of distinct positive integers, find the largest subset such that every pair (Si, S ...
- IP进制站群原理
百度搜索:“inurl:0×00”,会发现全是以八进制.十六进制形式显示的域名(如下图),当点击后,浏览器会自动将这些域名转换为十进制的ip.这种方式在黑帽圈目前挺火爆的,用于做长尾词排名,可以带来可 ...
- Mac上安装brew
用过ubuntu系统的都知道,上面有一个命令apt-get 很方便可以快速的安装很多软件 特别lamp环境 都是一键安装. 在mac上也有类似的命令 brew brew用法可以访问官网地址 http ...
- Android API Level与sdk版本对照表
API等级1: Android 1.0 API等级2: Android 1.1 Petit Four 花式小蛋糕 API等级3: Android 1.5 Cupcake 纸杯蛋糕 API等级4: An ...
- 【转载】Powershell获取世纪互联Office365中所有用户的OWA时区
get-mailbox -resultsize unlimited | Get-MailboxRegionalConfiguration | select Identity,TimeZone | wh ...
- oracle中的loop与while循环
Oracle中loop语句会先执行一次循环,然后再判断“exit when”关键字后面的条件表达式的值是true还是false,如果是true,那么将退出循环,否则继续循环. LOOP循环 语法如下l ...
- [Java][RCP] 引入第三方jar包时出错: XXXcannot be found XXX
为什么会这样? 下面的博客有介绍,不在累赘 http://dengmin.iteye.com/blog/260585 这些博客貌似忘掉了一点,或者是我本地的Eclipse新建的项目Version不够高 ...
- DC-EPC小结
今晚上修完了最后2个学时的EPC(课程主页),这意味着本学期的DC和共20个学时的EPC到此结束,这有可能是我人生中最后一次上英语课. Tom是我DC课的老师,EPC起于Tom和Micheal的Deb ...