前几天,在2个系统中涉及到相互访问,并且返回处理结果。例如:项目A的一个servlet调用项目B的某一个servlet,在jQuery.ajax中不能直接通过json的方式访问。最终搜索了许久,终于发现通过jsonp的方式可以实现。现将处理过程记录下来,以做备忘。
首先,前段js代码实现:
<html> <head> <script type='text/javascript' src='jquery-1.8.3.js'></script> <script type='text/javascript'> $(function() { $.ajax( { type : "get", url : "http://localhost:8080/TestJOSNP/TestJSONPServlet", dataType : "jsonp", jsonpCallback : "success", success : function(json) { alert('调用成功!'); }, error: function(jqXHR, textStatus, errorThrown) { alert("调用失败!"); } }); }); function success_jsonpCallback(data) { success(data); } </script> </head> <body> </body> </html>
其次,servlet的实现:
package com.learning; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestJSONPServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // json字符串 String retStr = "\"[{'retcode', '5'}]\""; try { // 写回客户端 resp.getWriter().write("success_jsonpCallback(" + retStr + ")"); } catch (IOException ex) { ex.printStackTrace(); } } }
ajax的jsonpCallback参数,为jsonp请求指定一个回调函数名,这个值将用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成自己独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。
ajax jsonp与普通的ajax请求的主要区别在于——请求响应结果的处理。也就是说,调用jsonp回调函数success_jsonpCallback,并将要响应的字符串或json传入此方法(作为参数值)。此外,ajax jsonp对于同步或异步请求没有影响。
相关推荐
Jquery跨域访问Web服务的demo源码
Jquery跨域Json请求处理
asp.net jquery 跨域提交请求数据
所以我猜是跨域问题,马上就去google搜索了一下jquery跨域的解决,是用$.getJSON这个方法,但是我测试了许久,还是不行,继续找,还是没能找到。于是沉下心来,自己想:现在就是我可以通过那个远程的方法在浏览器中...
A站通过模态窗口打开B站,同时能够跨域获取返回值,亲测可用 基于IFRAME的多层嵌套实现
JQuery跨域访问解决方案 JQuery
这个就么问题了,成功实现跨域读JSON,然后自定义显示天气预报。
这是一份非常有用的Jquery跨域访问实例,里面提供了3种方法,前台后台都有涉及,希望对你们会有所帮助
JAVA调用外接设备(制卡机)---JQuery跨域,AJAX跨域问题
主要介绍了jquery跨域请求示例(jquery发送ajax请求),需要的朋友可以参考下
jquery跨域调用,js跨域调用,jsonp,跨域调用
Android跨域请求获取Java后端数据,登录界面例子,完整代码,运行需要安装有eclice和Android Studio开发软件
AJAX(XMLHttpRequest)进行跨域请求方法详解 AJAX(XMLHttpRequest)跨域请求是指一个站点中的资源访问另外一个不同域名站点上的资源。这种情况很常见,比如说通过style标签加载外部样式表文件、通过img标签加载外部...
自己做的小例子,关于跨域调用。用的是jquery. 里面两个工程。A和B。用A调用B。 放在tomcat或myeclipse中就可以跑起来。以前做建行的项目。用到的。很实用。 两个工程可以放在不同的机器上。IP也不同。相当...
通过XMLHTTPRquest请求不同域上的数据,原来js跨域访问是后台有个处理路径“/test”的函数。下面给大家介绍jQuery跨域问题解决方案,有需要的小伙伴可以参考下
基于jQuery的jsonp ajax跨域请求,
服务支持跨域请求的配置服务支持跨域请求的配置服务支持跨域请求的配置服务支持跨域请求的配置
跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),因为我们在日常的项目开发时会不可避免的需要进行跨域操作...
利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据