51前写的一篇跨域提交数据的blog——JQuery AJAX跨域提交参数、接收json数据,在IE中使用时,页面会弹出提示“该页正在访问其控制范围之外的信息。这可能导致安全风险。是否继续?”,虽然在chrome和firefox里面则没这个提示,但IE用户还是较多,总感觉有点用户体验上有所欠缺,今天参考IBM社区的一篇文章——使用 JSONP 实现跨域通信,改了一下代码,使用jsonp的方式来实现,修改如下:
Servlet代码:
public class ProvideCourseInfo extends HttpServlet{
private static final long serialVersionUID = -487357559770822253L;
private ICourseService courseService;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String jsonData = getDataAsJson(req.getParameter("symbol"));
String output = req.getParameter("callback") + "(" + jsonData + ");";
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/javascript");
PrintWriter out = resp.getWriter();
out.println(output);
}
private String getDataAsJson(String courseNumber) {
if(StringUtil.isBlank(courseNumber)){
Course course = courseService.getValidCourse(courseNumber);
if(course!=null){
StringBuilder sb = new StringBuilder();
String courseName = course.getCourseName();
sb.append("{");
sb.append("\"");
sb.append("courseName");
sb.append("\"");
sb.append(":");
sb.append("\"");
sb.append(courseName);
sb.append("\"");
Integer lang = course.getLang();
sb.append(",");
sb.append("\"");
sb.append("lang");
sb.append("\"");
sb.append(":");
sb.append("\"");
sb.append(lang);
sb.append("\"");
sb.append("}");
course = null;
return sb.toString();
}
}
return "0";
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
@Override
public void init() throws ServletException {
super.init();
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(this
.getServletContext());
courseService = (ICourseService) context.getBean("courseService");
}
}
jsp代码:
<script type="text/javascript">
function showCourseInfo(){
var resourceCode = document.getElementById("resourceCode").value;
jQuery.getJSON("http://10.10.6.31:8099/jsonp/provideCourseInfo?symbol="+resourceCode+"&callback=?",
function(data) {
if(data!="0"){
document.getElementById('resourceName').value = data.courseName;
document.getElementById('languageType').value = data.lang;
}else{
document.getElementById('resourceName').value = '';
document.getElementById('languageType').value = '';
alert("课件编码不存在!!!");
}
});
}
</script>
<dt>
<label><span>*</span> 课件编码:</label>
</dt>
<dd>
<input type="text" class="default_txt" id="resourceCode" name="resourceCode" value="112290_eng"/>
<input name="Button2" type="button" class="btn btn_default" onclick="showCourseInfo()" value="Load…" />
</dd>
分享到:
相关推荐
html通过 ajax jsonp跨域请求接收和传送数据 使用HTML页面与后台跨域交互,获得后台数据或传输数据给后台
jsonp跨域获取数据的基础教程.docx
jsonp跨域请求数据实现手机号码查询实例分析.docx
原生Js利用Jsonp跨域实现百度搜索功能
在js里使用Jsonp 实现跨域解决源代码实例
ajax jsonp 跨域处理
使用jsonp跨域获取json数据。Ajax获取JAVA服务器json数据。
主要介绍了jQuery使用JSONP实现跨域获取数据的三种方法,结合实例形式对比分析了jsonp跨域获取数据的3种常用操作技巧,需要的朋友可以参考下
ajax jsonp跨域传参,里面有源码,不过写在txt中了,很适合调用别人的接口
ajax跨域CORS方案 JSONP跨域请求方案.zip
原生ajax库,实现jsonp跨域,短小精悍。
本文将给您介绍如何使用getJSON来实现异步跨域提交表单
jquery下利用jsonp跨域访问实现方法.docx
主要介绍了jsonp跨域请求数据实现手机号码查询的方法,结合实例形式较为详细的分析了jsonp跨域请求数据的原理与查询号码的应用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
jsonp跨域获取百度联想词的方法分析.docx
Javascript跨域访问是web开发者经常遇到的问题,什么是跨域,就是一个域上加载的脚本获取或操作另一个域上...下面这篇文章主要介绍了JavaScript用JSONP跨域请求数据的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
本文实例讲述了AngularJS实现的JSONP跨域访问数据传输功能。分享给大家供大家参考,具体如下: 大家会自然想到只有一个字母之差的JSON吧~ JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个...
了解了jsonp之后,大家应该也都明白了,jsonp主要就是用来实现跨域的获取数据,今天我们就来详细探讨下如何在实际中应用jsonp实现跨域
主要给大家介绍了关于jsonp跨域获取数据的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧