微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jsonp跨域提交数据

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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交互,节省带宽和时间,提高用户体验。在使用AJAX时,需要通过解析JSON格式的数据,来获取所需要的数据。
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面中展示出来。其中,JSON是一种常用的数据格式。那么,在使用Ajax获取JSON数据后,如何将数据取出来呢?
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用AJAX技术可以在不刷新页面的情况下异步获取数据。那么我们该如何循环JSON对象数组呢?下面我们通过一段代码来进行讲解。
AJAX(Asynchronous JavaScript and XML)是一种用于创建 Web 应用程序的技术,它使用 JavaScript 和 XML(或 JSON)来在后台异步传输数据。
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面的情况下,向服务器发出请求并更新页面,实现了异步更新的效果。而传递JSON数据是AJAX中比较常见的一种方法,下面是如何使用AJAX传递JSON数据的详细介绍。
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无需刷新页面的异步数据交互。在处理数据时,常常需要删除一些已存在的数据。本文将介绍如何使用Ajax删除JSON数据库中的数据。
在使用Ajax时,我们经常需要将数据格式化为JSON格式。JSON是一种轻量级数据交换格式,它以键值对的形式来表达数据。
AJAX是一种支持异步请求的技术,它可以让前端页面不用刷新就能向后台请求数据,并异步地展示给用户,提高了用户的体验感。其中,使用JSON格式化数据可以帮助我们更方便快捷地处理返回的数据。
AJAX是一种前端技术,可以通过异步请求来获取数据,并在页面上更新它们。JSON是一种轻量级的数据交换格式,因为它易于读取和编写,因此在Web应用程序中被广泛使用。AJAX传送JSON数据是一种常见的技术,可以让Web应用
在前端开发中,ajax是很常见的技术,它可以在不刷新整个页面的情况下请求服务器数据和更新部分页面。而当需要遍历多个json文件时,可以使用ajax循环遍历来实现。