参考资料:
1.http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html
2.http://www.cnblogs.com/lemontea/archive/2012/12/11/2812268.html
测试1
前端代码1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>New Web Project</title> </head> <body> <script type="text/javascript"> function invokeByRemote(data) { alert("我是本地js函数,我被远端调用,调用方IP:"+data.ip); }; </script> <script type="text/javascript" src="http://10.24.18.118:8080/sunjianWeb/js/remote.js"></script> </body> </html>
服务器端代码1
var data={}; data.ip = "10.24.18.118"; invokeByRemote(data);
测试2
前端代码2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>New Web Project</title> <script type="text/javascript" src="jquery-1.7.2.min.js"></script> <script type="text/javascript"> function testCallBack(data) { alert("你查询快递号:"+data.kuaiDiNumber+"的快递 寄件人是:"+data.sendPerson+" "); } function createScript(src) { $("<script><//script>").attr("src", src).appendTo("head"); } $(function(){ $("#queryButtonId").click(function(){ var kuaiDi = $.trim($("#kudiId").val()); var srcParam = "http://10.24.18.118:8080/sunjianWeb/jsonPTest2.jsp" + "?kuaiDiNumber="+kuaiDi + "&callBackFun=testCallBack"; createScript(srcParam); }) }) </script> </head> <body> 快递号:<input type="text" id="kudiId" /> <input type="button" value="查询" id="queryButtonId"/> </body> </html
服务器端代码2
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String kuaiDiNumber = request.getParameter("kuaiDiNumber"); String callBackFun = request.getParameter("callBackFun"); System.out.println("kuaiDiNumber:"+kuaiDiNumber+" callBackFun:"+callBackFun); String jsonStr = ""; //模拟后台查询,这里简单处理,实际可以是后台查询数据库等复杂逻辑 if (kuaiDiNumber.equals("1")) { jsonStr = "{'kuaiDiNumber':'"+kuaiDiNumber+"','sendPerson':'兔斯基'}"; } else { jsonStr = "{'kuaiDiNumber':'"+kuaiDiNumber+"','sendPerson':'我是MT'}"; } response.getWriter().write(callBackFun+"("+jsonStr+")"); response.getWriter().flush(); %>
测试3
前端代码3
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>New Web Project</title> <script type="text/javascript" src="jquery-1.7.2.min.js"></script> <script type="text/javascript"> /* function testCallBack(data) { alert("你查询快递号:"+data.kuaiDiNumber+"的快递 寄件人是:"+data.sendPerson+" "); }*/ function jqueryJsonPVisit1(urlParam) { $.ajax({ type: "get", url: urlParam, dataType: "jsonp", //如果不指定jsonp回调函数url中的参数名,默认就是callback //jsonp: "callBackFun", //jsonpCallback:"callBackFun", success: function(data){ alert("(Visit1)你查询快递号:"+data.kuaiDiNumber+"的快递 寄件人是:"+data.sendPerson+" "); }, error: function(e){ alert('fail'); } }); } function jqueryJsonPVisit2(urlParam) { $.ajax({ type: "get", url: urlParam, dataType: "jsonp", //回调函数url中的参数名 后台request.getParameter("callBackFun"); jsonp: "callBackFun", //回调函数名称 jsonpCallback:"testCallBack", success: function(data){ alert("(Visit2)你查询快递号:"+data.kuaiDiNumber+"的快递 寄件人是:"+data.sendPerson+" "); }, error: function(e){ alert('fail'); } }); } $(function(){ $("#queryButtonId1").click(function(){ var kuaiDi = $.trim($("#kudiId").val()); var urlParam = "http://10.24.18.118:8080/sunjianWeb/jsonPTest3.jsp" + "?kuaiDiNumber="+kuaiDi; jqueryJsonPVisit1(urlParam); }) $("#queryButtonId2").click(function(){ var kuaiDi = $.trim($("#kudiId").val()); var urlParam = "http://10.24.18.118:8080/sunjianWeb/jsonPTest3A.jsp" + "?kuaiDiNumber="+kuaiDi; jqueryJsonPVisit2(urlParam); }) }) </script> </head> <body> 快递号:<input type="text" id="kudiId" /> <input type="button" value="查询1" id="queryButtonId1"/> <input type="button" value="查询2" id="queryButtonId2"/> </body> </html
服务器端代码3
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String callBackFun = request.getParameter("callback"); String kuaiDiNumber = request.getParameter("kuaiDiNumber"); System.out.println("kuaiDiNumber:"+kuaiDiNumber+" callBackFun:"+callBackFun); String jsonStr = ""; //模拟后台查询,这里简单处理,实际可以是后台查询数据库等复杂逻辑 if (kuaiDiNumber.equals("1")) { jsonStr = "{'kuaiDiNumber':'"+kuaiDiNumber+"','sendPerson':'兔斯基'}"; } else { jsonStr = "{'kuaiDiNumber':'"+kuaiDiNumber+"','sendPerson':'我是MT'}"; } response.getWriter().write(callBackFun+"("+jsonStr+")"); response.getWriter().flush(); %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String callBackFun = request.getParameter("callBackFun"); String kuaiDiNumber = request.getParameter("kuaiDiNumber"); System.out.println("kuaiDiNumber:"+kuaiDiNumber+" callBackFun:"+callBackFun); String jsonStr = ""; //模拟后台查询,这里简单处理,实际可以是后台查询数据库等复杂逻辑 if (kuaiDiNumber.equals("1")) { jsonStr = "{'kuaiDiNumber':'"+kuaiDiNumber+"','sendPerson':'兔斯基'}"; } else { jsonStr = "{'kuaiDiNumber':'"+kuaiDiNumber+"','sendPerson':'我是MT'}"; } response.getWriter().write(callBackFun+"("+jsonStr+")"); response.getWriter().flush(); %>
相关推荐
为了解决这个问题,开发者们发明了各种跨域解决方案,其中JSONP(JSON with Padding)是一种广泛使用的非官方标准。本文将深入探讨JSONP的工作原理以及如何在实际项目中应用。 ### JSONP简介 JSONP全称是"JSON ...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性来实现数据的交换。这个本地实现的最简单jsonp例子旨在帮助初学者更好地理解这一概念。 首先,我们要明确的是,...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML中`<script>`标签可以跨域请求...随着CORS(跨源资源共享)的普及,JSONP的重要性逐渐被CORS取代,但理解JSONP的工作原理对于前端开发者仍然很重要。
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性来实现跨域数据交换。在本示例"ss0-jsonp-demo"中,...这个示例对于理解和学习SSO及JSONP技术具有很好的参考价值。
你可以解压`demo`文件查看具体实现,以便更深入地理解和学习JSONP的工作机制。 总结来说,JSONP是通过动态加载跨域的JavaScript脚本来绕过同源策略,获取用户IP的一种技术。在前端,我们需要定义一个回调函数并创建...
描述中提到的学习文档是可运行的,这意味着可能包含了一个演示JSONP工作原理的代码示例,让学习者能够通过实践理解这一概念。 JSONP的工作原理如下: 1. **请求发起**:客户端(通常是浏览器中的JavaScript)创建...
`jquery-jsonp-master.zip`是一个包含jQuery JSONP实现的压缩包,适用于学习和应用轻量级的JSONP解决方案。 首先,我们需要了解JSONP的基本原理。由于同源策略的限制,JavaScript通常不能直接向其他域名发送Ajax...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了浏览器的同源策略限制的漏洞,通过动态创建`<script>`标签来实现...通过学习这个资料包,你可以更好地掌握JSONP的使用技巧,解决实际开发中的跨域问题。
描述中的“自己学习用的jsonp示例,一个页面建立后台方法,另一个页面负责通过js调用”揭示了项目的基本结构。首先,服务器端(后台)会设置一个方法,这个方法能够接收请求并返回JSON格式的数据。这个数据通常是...
Unigui是一个基于Delphi开发的跨平台UI...如果你想要学习或实施Unigui服务端的JSONP功能,解压这个文件并研究其中的代码将大有帮助。记得根据你的具体需求进行调整和优化,确保服务端和客户端之间的通信既高效又安全。
"详解JSON和JSONP劫持以及解决方法" 本文主要介绍了JSON和JSONP劫持的概念...本文旨在帮助读者深入理解JSON劫持和JSONP劫持的概念、攻击过程、解决方法,以及实例代码,希望能够对大家的学习和工作产生实质性的帮助。
JSONP(JSON with Padding)是一种在JavaScript中跨域获取数据的技术,主要应用于浏览器环境,由于浏览器的同源策略限制,JavaScript不能直接从不同源获取数据。JSONP巧妙地利用了HTML `<script>` 标签不受同源策略...
总的来说,仿百度的这个示例涵盖了前端数据交互、本地存储和用户体验优化等多个方面,是学习和实践JavaScript开发技能的好例子。在实际开发中,还可以结合现代前端框架如React、Vue等,进一步提升代码组织和复用性。
标题中的“java版 解决跨域问题CORS ajax...通过阅读和分析这些源代码和讨论,开发者可以更好地理解如何在实际项目中处理跨域问题,并学习如何处理相关技术的细节,如JSONP只支持GET请求的限制以及可能出现的编码问题。
开发者可以通过查看这些源码学习JSONP的工作原理,或者直接在项目中集成和使用这个库。 总结起来,这个小库为JavaScript开发者提供了方便的JSONP请求解决方案,帮助他们克服同源策略的限制,实现跨域数据交换。其...
【描述】:“一个很全的Android实例,有很多demo”,这意味着这个压缩包中包含了多种实际操作的代码样例,帮助开发者理解并掌握如何在Android应用中运用HTML5、jQuery EasyUI、AJAX、JSONP和JSON。这些技术的结合...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性,将JSON数据包裹在...通过学习和理解这个解析器,开发者可以更好地掌握JSONP的工作原理,并在实际项目中灵活运用。
作者通过学习和实践,掌握了使用vue-jsonp插件的方法,并解决了遇到的难题。这对读者在类似场景下的开发具有很大的参考价值。希望本文的内容能为需要在Vue项目中进行跨域数据交互的开发者们提供帮助。
在现代的Web开发中,跨域资源共享(CORS)是经常遇到的问题。在本文中,我们将探讨在Java Web应用中如何实现JSONP(JSON with ...希望本文的内容能够对您的学习和工作有所帮助,也欢迎大家对我们的内容给予支持。
在网页开发中,为了实现跨域数据交互,我们经常使用JSONP(JSON with Padding)技术。...开发者可以通过学习这个案例,掌握JSONP的基本用法,并将其应用于自己的项目中,提升网站的交互性和实用性。