ajax跨域请求--jsonp实例
ajax请求代码:
//区域事件选择配送点
function changeDistrict(value){
if(value == 0){
$('#transport_node').empty();
$('#transport_node').append('<option value="0">请选择</option>');
return;
}
$('#transport_node').empty();
$('#transport_node').append('<option value="0">载入中...</option>');
$.ajax({
type: 'GET',
url: "http://192.168.33.114:8080/UIDTraceAdmin/transportnode/pagelist/jsonp?callbackFunction=jsonpCallback",
async: false,
dataType: "jsonp",
jsonp: "jsonpCallback",//传递给请求处理程序或页面的。用以获得jsonp回调函数名的參数名(一般默觉得:callback)
success: function(o){},
timeout:3000
});
}
//注意:跨域服务端响应返回后调用此函数
function jsonpCallback(result) {
....//详细代码省略
}
要点:
1.url中的请求參数callbackFunction=jsonpCallback这是server响应返回后调用的javascript方法的名称
2.dataType要为jsonp
跨域server处理代码:
@RequestMapping("/pagelist/jsonp")
	public void pagelist(@ModelAttribute TransportNode node,HttpServletRequest httpReq,
			HttpSession session,HttpServletResponse response) {
		//返回头部设置
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Content-type", "application/x-javascript;charset=utf-8");
        response.setDateHeader("Expires", 0);  
        String jsonpCallback = httpReq.getParameter("callbackFunction");//jsonp回调函数名
        JSONObject resultJson  = new JSONObject();
        PrintWriter out = null;
		try {
			out = response.getWriter();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		try {
			node.setRowStart((node.getPage() - 1) * node.getRows() + 1);
			node.setRowEnd(node.getPage() * node.getRows());
			resultJson.put("transportList", JsonUtils.toJSONList(business.getList(node)));
			resultJson.put("success", true);
		    System.out.println(resultJson.toString());
	        out.println(jsonpCallback+"("+resultJson.toString()+")");//返回jsonp格式数据
	        out.flush();
	        out.close();  
		} catch (Exception e) {
			LogWriter.log("/pagelist/jsonp",e);
			try {
				resultJson.put("success", false);
			} catch (JSONException e1) {
				e1.printStackTrace();
			}
		    out.println(jsonpCallback+"("+resultJson.toString()+")");//返回jsonp格式数据
	        out.flush();
	        out.close();
		}
注意要点:
1.设置响应报文头,response.setHeader("Content-type", "application/x-javascript;charset=utf-8");,消除了"Resource interpreted as Script but transferred with MIME type text/plain",同一时候要依据自己的编码格式设置正确的编码;
2.跨域server响应给给client的数据为:要调用的javascript函数名称(json格式的数据),在这个样例中,比方响应返回了例如以下的数据
jsonpCallback({
    "code": "aaa",
    "price": 1780,
    "tickets": 5
});
client接收到数据后。调用
function jsonpCallback(result) { ...}
{ "code": "aaa","price": 1780,"tickets": 5}会自己主动解析成result。
要訪问数据中的“code”的值,在函数体里写result.code就可以。
ajax跨域请求--jsonp实例的更多相关文章
- Ajax跨域:Jsonp实例--百度搜索框下拉提示
		
Ajax跨域:Jsonp实例--百度搜索框下拉提示 一.总结 一句话总结:a.找好接口:b.用script标签的src引入文件(json数据):c.定义及实现上一步引入文件中的函数 1.如何找到一个网 ...
 - AJAX 跨域请求 - JSONP获取JSON数据
		
Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示 ...
 - 【JS跨域请求】Ajax跨域请求JSONP
		
前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资料,原来如此... 为何一直知道jsonp,但一直迷迷糊糊的不明白 ...
 - Ajax跨域请求数据实例(JSOPN方式)
		
今天在做取消申请的时候遇到了一个跨域ajax提交的问题. 情景是: 系统A是asp.net的站点,其中包括一个取消申请的接口(get方式通过参数提交到系统的某一个页面,然后返回提交成功或失败) 系统B ...
 - 【转】AJAX 跨域请求 - JSONP获取JSON数据
		
来源:http://justcoding.iteye.com/blog/1366102/ Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流 ...
 - ajax跨域请求のJSONP
		
简单说了一下,JSON是一种基于文本的数据交换方式,或者叫做数据描述格式. JSON的优点: 1.基于纯文本,跨平台传递极其简单: 2.Javascript原生支持,后台语言几乎全部支持: 3.轻量级 ...
 - ajax跨域请求-jsonp
		
1. 同源策略 ajax之所以需要“跨域”,罪魁祸首就是浏览器的同源策略.即,一个页面的ajax只能获取这个页面相同源或者相同域的数据. 如何叫“同源”或者“同域”呢?——协议.域名.端口号都必须相同 ...
 - JQuery的Ajax跨域请求原理概述及实例
		
今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发 JQuer ...
 - jsonp其实很简单【ajax跨域请求】
		
js便签笔记(13)——jsonp其实很简单[ajax跨域请求] 前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资 ...
 
随机推荐
- Visual C++ 6.0编程环境的使用
			
1.1 编制并运行程序的四部曲 (1)编辑(把程序代码输入,交给计算机). (2)编译(成目标程序文件.obj).编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟 ...
 - Week15(12月16日):授课综述1
			
Part I:提问 =========================== 1.( )类提供了一个对Entity Framework的抽象,能够进行数据持久化并接受数据. A.Layout ...
 - HLS 协议
			
HTML 5 视频直播一站式扫盲 本文来自于腾讯bugly开发者社区,原文地址:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1 ...
 - Windows Phone 8初学者开发—第7部分:本地化应用程序
			
原文 Windows Phone 8初学者开发—第7部分:本地化应用程序 第7部分:本地化应用程序 原文地址: http://channel9.msdn.com/Series/Windows-Phon ...
 - 周根项《一分钟速算》全集播放&下载地址
			
点击图片就可以观看 ↓↓↓↓↓↓↓↓ 第1章:指算法 周根项<一分钟速算>第1章:指算法 第一节 对手的认识 周根项<一分钟速算>第1章:指算法 第二节 个位数比十位数大1乘以 ...
 - 关于PCA算法的一点学习总结
			
本文出处:http://blog.csdn.net/xizhibei ============================= PCA,也就是PrincipalComponents Analysis ...
 - 写一方法用来计算1+2+3+...n,其中n作为参数输入,返回值可以由方法名返回,也可以由参数返回
			
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
 - CURL基础
			
下载单个文件: #下载单个文件,默认将输出打印到标准输出中(STDOUT)中curl http://www.centos.org # 将文件下载到本地并命名为mygettext.html curl - ...
 - 我的Python成长之路---第三天---Python基础(9)---2016年1月16日(雾霾)
			
一.集合 set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key. 集合和我们数学中集合的概念是一样的,也有交集,并集,差集,对称差集等 ...
 - 分享一个 CSDN 自动评论角本
			
先修改帐户名和密码 import requests from BeautifulSoup import BeautifulSoup import time def commitfunc(source_ ...