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>
分享到:
相关推荐
本篇文章将深入探讨JSONP的工作原理以及在jQuery下如何利用它来实现异步跨域提交表单。 ### JSONP简介 JSONP是一种解决跨域问题的技术,其核心思想是利用`<script>`标签不受同源策略限制的特性。当浏览器解析到`...
在实际开发中,实现JSONP跨域请求时需要特别注意以下几点: 1. 确保服务器支持JSONP请求。通常需要服务器端支持输出callback函数名,并对返回数据进行格式化处理。 2. 服务器需要对JSONP请求进行安全校验,避免恶意...
JQuery AJAX 跨域提交参数、接收 JSON 数据 JQuery 的 AJAX 功能是实现异步数据交互的核心部分,对于跨域提交参数和接收 JSON 数据的需求,JQuery 提供了多种解决方案。 首先,JQuery 的 AJAX 功能可以使用 `$....
Ajax跨域提交是Web开发中的一个重要概念,它涉及到前端JavaScript与后端服务器之间的异步数据交互,特别是当这种交互跨越了不同的源(域名、协议或端口)时。在了解Ajax跨域提交前,我们首先需要理解Web浏览器的同源...
JSONP是一种通过动态插入`<script>`标签实现跨域的数据交换方式。Servlet可以通过参数名(如`callback`)识别JSONP请求,并将结果包裹在回调函数中返回。 在提供的压缩包`TestWeb`中,可能包含了一个简单的Web应用...
这种情况下,JSONP(JSON with Padding)成为一种常用的技术方案,它通过动态创建script标签的方式绕过同源策略,实现跨域请求。 在本次分享的内容中,我们将深入探讨如何利用JSONP技术跨域调用百度提供的...
通过jQuery实现异步提交表单时,可以利用`.submit()`和`$.ajax()`方法,而异步跨域提交则可以通过JSONP或代理服务器的方式实现。由于浏览器同源策略的限制,跨域提交需要特别的处理。JSONP是一种简便的方法,但它的...
### ASP AJAX 跨域提交数据实现方案 #### 一、背景与需求分析 在Web开发过程中,经常会遇到需要从第三方服务器获取数据的情况。比如,在一个分类信息网站中,存储了用户的IP地址,但用户可能更希望看到的是这些IP...
JSONP(JSON with Padding)是解决这一问题的传统方法之一,而jQuery的getJSON方法在实现跨域请求时,也会采用类似JSONP的方式。 首先,我们来看一下JSONP的基本概念。JSONP是一种利用`<script>`标签可以跨域请求...
总的来说,jQuery通过JSONP提供了一种简单易用的跨域解决方案,使得前端开发人员能够方便地从不同域名的服务器获取数据,丰富了Web应用的功能。然而,由于JSONP的本质是脚本注入,它可能会带来安全风险,如XSS攻击,...
- 在进行AJAX跨域提交的页面中,需要引入jquery.form.js插件,并设置document.domain为基础域名。 - 使用$.ajaxSubmit方法提交表单,需要指定url为跨域请求的目标地址,设置iframe为true以支持跨域传输数据。 - 在...
最初尝试通过AJAX直接向www.hc3i.cn/php/comment.php提交留言数据,但由于同源策略的存在,在非IE浏览器中出现了跨域访问错误。 #### 二、同源策略带来的问题及解决方案 **1. 同源策略概述** 同源策略是一种重要的...
首先,JSONP(JSON with Padding)是一种绕过同源策略限制的跨域数据交互方式,适用于浏览器环境。在12306网站的模拟设计中,JSONP允许客户端(浏览器)向不同源的服务端发送请求并获取数据,这对于构建分布式系统或...
1. **发送Ajax请求**:通过`GET`或`POST`方法向服务器发送异步请求,获取或提交数据。 2. **数据格式处理**:虽然名字中包含XML,但现代的Ajax库通常支持JSON、HTML等多种数据格式。 3. **回调函数**:允许开发者...
POST请求用于向服务器提交数据。与GET请求类似,但POST请求的数据包含在请求体中,而不是URL参数。示例中,我们创建一个PHP文件接收POST数据并返回计算结果。在JS代码中,`$http.post`用于发起POST请求,传递参数...
在Web开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛用于实现页面的异步更新,使得用户无需刷新整个页面就能获取和提交数据。然而,跨域请求是Ajax的一个常见问题,由于浏览器的同源策略限制,Ajax请求...
6. **POST请求**:POST请求通常用于向服务器提交数据,这在表单提交、API调用等场景中非常常见。在跨域设置完成后,客户端可以直接使用POST方法与WCF服务交互。 7. **无需JSONP**:JSONP(JSON with Padding)是一...
2. POST请求:对于需要向服务器提交数据的情况,可以使用HttpClient的post方法。POST请求通常用于创建新资源: ```typescript postData(data: any) { this.http.post('https://api.example.com/submit', data) ....
在现代Web开发中,前端应用通常与后端API进行交互以获取或提交数据。"vue-springboot-cors_jsonp"项目就是针对这种情况的一个实践,它涵盖了Vue.js、Spring Boot和CORS(跨源资源共享)以及JSONP(JSON with Padding...