`
geeksun
  • 浏览: 965117 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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>
 

分享到:
评论
2 楼 xunke515 2013-08-12  
1 楼 lijunlong 2012-11-20  

相关推荐

    jquery下利用jsonp跨域访问实现方法

    本篇文章将深入探讨JSONP的工作原理以及在jQuery下如何利用它来实现异步跨域提交表单。 ### JSONP简介 JSONP是一种解决跨域问题的技术,其核心思想是利用`&lt;script&gt;`标签不受同源策略限制的特性。当浏览器解析到`...

    jsonp跨域请求数据实现手机号码查询实例分析

    在实际开发中,实现JSONP跨域请求时需要特别注意以下几点: 1. 确保服务器支持JSONP请求。通常需要服务器端支持输出callback函数名,并对返回数据进行格式化处理。 2. 服务器需要对JSONP请求进行安全校验,避免恶意...

    JQuery AJAX跨域提交参数、接收json数据.docx

    JQuery AJAX 跨域提交参数、接收 JSON 数据 JQuery 的 AJAX 功能是实现异步数据交互的核心部分,对于跨域提交参数和接收 JSON 数据的需求,JQuery 提供了多种解决方案。 首先,JQuery 的 AJAX 功能可以使用 `$....

    Ajax跨域提交

    Ajax跨域提交是Web开发中的一个重要概念,它涉及到前端JavaScript与后端服务器之间的异步数据交互,特别是当这种交互跨越了不同的源(域名、协议或端口)时。在了解Ajax跨域提交前,我们首先需要理解Web浏览器的同源...

    https跨域POST提交实例(基于servlet)

    JSONP是一种通过动态插入`&lt;script&gt;`标签实现跨域的数据交换方式。Servlet可以通过参数名(如`callback`)识别JSONP请求,并将结果包裹在回调函数中返回。 在提供的压缩包`TestWeb`中,可能包含了一个简单的Web应用...

    利用jsonp跨域调用百度js实现搜索框智能提示

    这种情况下,JSONP(JSON with Padding)成为一种常用的技术方案,它通过动态创建script标签的方式绕过同源策略,实现跨域请求。 在本次分享的内容中,我们将深入探讨如何利用JSONP技术跨域调用百度提供的...

    jquery下异步提交表单 异步跨域提交表单

    通过jQuery实现异步提交表单时,可以利用`.submit()`和`$.ajax()`方法,而异步跨域提交则可以通过JSONP或代理服务器的方式实现。由于浏览器同源策略的限制,跨域提交需要特别的处理。JSONP是一种简便的方法,但它的...

    asp ajax跨域提交数据

    ### ASP AJAX 跨域提交数据实现方案 #### 一、背景与需求分析 在Web开发过程中,经常会遇到需要从第三方服务器获取数据的情况。比如,在一个分类信息网站中,存储了用户的IP地址,但用户可能更希望看到的是这些IP...

    php jq jquery getJSON跨域提交数据完整版

    JSONP(JSON with Padding)是解决这一问题的传统方法之一,而jQuery的getJSON方法在实现跨域请求时,也会采用类似JSONP的方式。 首先,我们来看一下JSONP的基本概念。JSONP是一种利用`&lt;script&gt;`标签可以跨域请求...

    JQuery跨域访问解决方案

    总的来说,jQuery通过JSONP提供了一种简单易用的跨域解决方案,使得前端开发人员能够方便地从不同域名的服务器获取数据,丰富了Web应用的功能。然而,由于JSONP的本质是脚本注入,它可能会带来安全风险,如XSS攻击,...

    ajax跨域(基础域名相同)表单提交的方法

    - 在进行AJAX跨域提交的页面中,需要引入jquery.form.js插件,并设置document.domain为基础域名。 - 使用$.ajaxSubmit方法提交表单,需要指定url为跨域请求的目标地址,设置iframe为true以支持跨域传输数据。 - 在...

    jsonp.pdf文件

    最初尝试通过AJAX直接向www.hc3i.cn/php/comment.php提交留言数据,但由于同源策略的存在,在非IE浏览器中出现了跨域访问错误。 #### 二、同源策略带来的问题及解决方案 **1. 同源策略概述** 同源策略是一种重要的...

    基于JSONP交互的模拟12306站点毕业设计

    首先,JSONP(JSON with Padding)是一种绕过同源策略限制的跨域数据交互方式,适用于浏览器环境。在12306网站的模拟设计中,JSONP允许客户端(浏览器)向不同源的服务端发送请求并获取数据,这对于构建分布式系统或...

    miniAjax一个迷你Ajax库为简单的Web应用程序提供了Ajaxjsonp和ready特性

    1. **发送Ajax请求**:通过`GET`或`POST`方法向服务器发送异步请求,获取或提交数据。 2. **数据格式处理**:虽然名字中包含XML,但现代的Ajax库通常支持JSON、HTML等多种数据格式。 3. **回调函数**:允许开发者...

    get post jsonp三种数据交互形式实例详解

    POST请求用于向服务器提交数据。与GET请求类似,但POST请求的数据包含在请求体中,而不是URL参数。示例中,我们创建一个PHP文件接收POST数据并返回计算结果。在JS代码中,`$http.post`用于发起POST请求,传递参数...

    解决ajax跨域请求问题

    在Web开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛用于实现页面的异步更新,使得用户无需刷新整个页面就能获取和提交数据。然而,跨域请求是Ajax的一个常见问题,由于浏览器的同源策略限制,Ajax请求...

    Wcf控制台宿主 跨域.zip

    6. **POST请求**:POST请求通常用于向服务器提交数据,这在表单提交、API调用等场景中非常常见。在跨域设置完成后,客户端可以直接使用POST方法与WCF服务交互。 7. **无需JSONP**:JSONP(JSON with Padding)是一...

    Angular中的数据请求 内置模块HttpClient实现(get post jsonp 以及第三方模板axios请求数据

    2. POST请求:对于需要向服务器提交数据的情况,可以使用HttpClient的post方法。POST请求通常用于创建新资源: ```typescript postData(data: any) { this.http.post('https://api.example.com/submit', data) ....

    vue-springboot-cros_jsonp:前初步跨域,cors,jsonp(新版springmvc)实现

    在现代Web开发中,前端应用通常与后端API进行交互以获取或提交数据。"vue-springboot-cors_jsonp"项目就是针对这种情况的一个实践,它涵盖了Vue.js、Spring Boot和CORS(跨源资源共享)以及JSONP(JSON with Padding...

Global site tag (gtag.js) - Google Analytics