关键词:
由于这两个URL是不同域的。
callback=callbackfunction
<script> var url = "http://localhost:8080/crcp/rcp/t99eidt/testjson.do?jsonp=callbackfunction"; var script = document.createElement('script'); script.setAttribute('src', url); //load javascript document.getElementsByTagName('head')[0].appendChild(script); //回调函数 function callbackfunction(data){ var html=JSON.stringify(data.RESULTSET); alert(html); } </script>
public class TestJson extends ActionSupport{ @Override public String execute() throws Exception { try { JSONObject jsonObject=new JSONObject(); List list=new ArrayList(); for(int i=0;i<4;i++){ Map paramMap=new HashMap(); paramMap.put("bank_no", 100+i); paramMap.put("money_type", i); paramMap.put("bank_name", i); paramMap.put("bank_type", i); paramMap.put("bank_status", 0); paramMap.put("en_sign_ways", 1); list.add(paramMap); } JSONArray rows=JSONArray.fromObject(list); jsonObject.put("RESULTSET", rows); HttpServletRequest request=ServletActionContext.getRequest(); HttpServletResponse response=ServletActionContext.getResponse(); response.setContentType("text/javascript"); boolean jsonP = false; String cb = request.getParameter("jsonp"); if (cb != null) { jsonP = true; System.out.println("jsonp"); response.setContentType("text/javascript"); } else { System.out.println("json"); response.setContentType("application/x-json"); } response.setCharacterEncoding("UTF-8"); Writer out = response.getWriter(); if (jsonP) { out.write(cb + "("+jsonObject.toString()+")"); System.out.println(jsonObject.toString()); } else{ out.write(jsonObject.toString()); System.out.println(jsonObject.toString()); } } catch (Exception e) { e.printStackTrace(); } return null; } }
$(function(){ jQuery.getJSON("http://localhost:8080/crcp/rcp/t99eidt/testjson.do?jsonp=?",function(data) { var html=JSON.stringify(data.RESULTSET); $("#testjsonp").html(html); } ); });
$.ajax({ type:"GET", async :false, url:"http://localhost:8080/crcp/rcp/t99eidt/testjson.do", dataType:"jsonp", success:function(data){ var html=JSON.stringify(data.RESULTSET); $("#testjsonp").html(html); }, error:function(){ alert("error"); } });
jsonp=自己主动生成回调函数名
jsonp=
callbackfunction前端跨域之jsonp实现原理及.net下jsonp的实现
...请求到服务端,拿到到服务端返回的数据,因为src是可以跨域的。前端通过src发送跨域请求时在请求的url带上回调函数,服务端收到请求时,接受前端传过来的回掉函数名称,将其拼接成js函数调用返回到前端即可完成跨域请求... 查看详情
jsonp原理及实现跨域方式
今天做页面时,后台给了个接口:https://a.a.com/a/a.json,我页面的上线地址是:http://b.b.com。显而易见,因为浏览器同源策略的限制,通过ajax无法无法取得json的数据。百度百科同源策略,它是由Netscape提出的一个著名的安全策略。... 查看详情
jsonp原理及实现(代码片段)
JSONP原理及实现1概述2优点3缺点4实现1概述JSONP是是一种跨域通信的手段,它可以让网页从别的域名(网站)中获取数据,即跨域读取数据,兼容性好,但是只能处理GET请求。它的原理是利用script标签的src属... 查看详情
jsonp原理及实现(代码片段)
JSONP原理及实现1概述2优点3缺点4实现1概述JSONP是是一种跨域通信的手段,它可以让网页从别的域名(网站)中获取数据,即跨域读取数据,兼容性好,但是只能处理GET请求。它的原理是利用script标签的src属... 查看详情
jsonp详细原理之一
/*script标签是不存在跨域请求的,类似的还有img,background:url,link 你可以想象一下,平时的这些标签都是可以直接引入外部资源的,所以是不存在跨域问题的*/functiongetData(res){ console.log(res.data); } /*这里创建一个JS标签,相当于... 查看详情
jsonp原理详解
...生的:一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准。不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不仅如... 查看详情
jsonp的原理
...呢?1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准。2、不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不... 查看详情
vue--jsonp的诞生原理及应用实例
...数据变换的需求。但是,Ajax有一个缺点,就是他不允许跨域请求资源。如果我的代码在codepen上,我不能将我的数据放到codepen网站上,那么我只能放到我自己的服务器中,这样的话,就无法通过Ajax访问到这个数据了。解决:想... 查看详情
jsonp原理详解(代码片段)
...的:1、一个众所周知的问题,ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态页面、web服务、WCF,只要是跨域请求,一律不准。2、不过我们又发现,web页面上调用js文件时则不受跨域的影响(不仅如... 查看详情
原生javascript里jsonp的实现原理
ajax不能跨域,jsonp可以跨域跨域的核心思想: 调用(拿到的接口),定义(jsonp核心处理器)分别是不同的script标签里面进行跨script取数据(只有get方式进行取数据) jsonp传进来的数据是{url:‘‘,data:{ ... 查看详情
现开发项目遇见难题及解决方案记录
一.ajax跨域的问题 因为之前没参与过web开发,所以面临着ajax不能跨域的问题。网友给出的解决方案是提交的dataTpye写jsonp。看了下jsonP的原理,必须建立在原服务器内设有callback函数的前提下才能访问。且jsonp不认识json,就算... 查看详情
原生javascript里jsonp的实现原理
ajax不能跨域,jsonp可以跨域跨域的核心思想: 调用(拿到的接口),定义(jsonp核心处理器)分别是不同的script标签里面进行跨script取数据(只有get方式进行取数据) jsonp传进来的数据是{url:‘‘,data:{ ... 查看详情
js跨域原理及解决方案
方法一:jsonp函数在HTMLDOM中,Script标签是可以跨域访问服务器上的数据的.因此,可以指定script的src属性为跨域的url,基于script标签实现跨域.script标签本身就可以访问其它域的资源,不受浏览器同源策略的限制,可以通过在页面动态... 查看详情
jsonp跨域实现
...<script>节点的方法向不同域提交HTTP请求的方法。JSONP跨域的基本原理:由于script标签不受浏览器同源策略的影响,允许跨域引用资源。因此,通过动态创建script标签,然后利用src属性进行跨域。JSONP的优点:不受同源策略的... 查看详情
jsonp原理及其简单封装(代码片段)
...JSONP1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准;2、不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不... 查看详情
jsonp原理,怎样实现跨域?
...JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。我们拿最近比较火的谍战片来打个比方,JSON是地下党们用来书写和交换情 查看详情
jsonp跨域原理
<!DOCTYPEhtml><htmllang="en"><head><metacharset="utf-8"></head><body> <inputtype="button"value="点击请求"> <scriptsrc="jquery.min.js"></script> <sc 查看详情
解决ajax跨域问题-jsonp原理解析
解决Ajax跨域问题-JSONP原理解析为什么会有跨域问题?-因为有同源策略同源策略是浏览器的一种安全策略,所谓同源指的是请求URL地址中的协议,域名和端口都相同,只要其中之一不相同就是跨域同源策略主要为了保证浏览器的安... 查看详情