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) {
- if(result.success == true){
- $('#transport_node').empty();
- $('#transport_node').append('<option value="0">请选择</option>');
- $.each(result.transportList, function(i, n){
- var html = '<option value="'+n.nodeId+'">'+n.transportnodeName+'</option>';
- $('#transport_node').append(html)
- });
- }else{
- $('#transport_node').empty();
- $('#transport_node').append('<option value="0">请选择</option>');
- }
- }
要点:
1.url中的请求参数callbackFunction=jsonpCallback这是服务器响应返回后调用的javascript方法的名称
2.dataType要为jsonp
跨域服务器处理代码:
- @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.jsonp的数据格式是:jsonpCallback+"("+resultJson.toString()+")"
举个例子:
jsonpCallback({
"code": "aaa",
"price": 1780,
"tickets": 5
});
相关推荐
PHP下ajax跨域的解决方案之jsonp实例分析.docx
主要介绍了PHP下ajax跨域的解决方案之jsonp,结合实例形式分析了PHP ajax跨域的解决方案jsonp相关原理、实现技巧与操作注意事项,需要的朋友可以参考下
Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 这篇文章主要介绍了AJAX跨域请求JSONP获取JSON数据的实例代码,需要的朋友可以参考下
今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发 JQuery对于Ajax的跨域请求有两类解决...
使用Jquery中的Aajx方法利用Jsonp方式访问豆瓣公开的api接口,跨域获取书籍信息。
主要介绍了原生js实现ajax请求和JSONP跨域请求操作,结合实例形式分析了基于原生js实现的ajax请求和JSONP跨域请求相关操作技巧与使用注意事项,需要的朋友可以参考下
本文实例讲述了jquery+ajax实现跨域请求的方法。分享给大家供大家参考。具体实现方法如下: 说明:这里的dataType 为 “jsonp” ;type 只能为 GET 前台请求代码如下: 代码如下:$.ajax({ type: “GET”, url...
本文实例讲述了jsonp跨域请求数据实现手机号码查询的方法。分享给大家供大家参考,具体如下: 前言 网上有很多开放的api,我们在本地通过ajax获取数据时,总会碰到一个问题,那就是跨域!如果不借助php等,仅仅通过...
很庆幸,我又见到了末日后新升的太阳,所以我还能在这里写文章,言归正传哈,最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,...
本文实例分析了jquery中ajax跨域。分享给大家供大家参考,具体如下: JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问 方法一: jsonp之 get...
下面小编就为大家带来一篇Ajax的jsonp方式跨域获取数据的简单实例。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
但,凡事都是有利弊,同源策略也导致了我们想用AJAX跨域请求,但NO!!为了规避这种限制,其中有一方法就是JSONP。 JSONP的基本思想:就是通过[removed]的src,向服务器请求数据,且这不受同源策略限制(img和iframe...
不说废话,先上一个用ajax请求下本地的一个.txt文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> [removed] [removed] =function...
今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友
实例代码分为前台和后台,前台为一个其他项目的搜索框,后台为WCP开源项目搜索的代码,作用是:在其他项目中整合WCP,并实现自己搜索的API,对检索内容进行拼接。有需要的可以下载一下。
当使用ajax跨域请求时,浏览器报错:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin.肯定是跨域的问题,如果用jsonp或者proxy的方式进行修改的话未免需要太大的工程量,所以采用...
3.3、jQuery使用JSONP跨域 3.4、跨域资源共享(CORS) 3.5、小结 四、弹出层 五、模板引擎 5.1、Hello World 5.2、方法 5.3、与AJAX结合应用 六、示例下载 一、AJAX示例 AJAX全称为“Asynchronous JavaScript And...