`
charice59
  • 浏览: 9851 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

jQuery跨域请求,获取返回值

阅读更多

    前几天,在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使用ajax跨域请求获取数据

    首先,要启用jQuery的跨域支持,我们需要设置`jQuery.support.cors`为`true`,这允许jQuery执行跨域请求。在示例代码中,有这样一行: ```javascript jQuery.support.cors = true; ``` 这是解决“no transport”错误...

    java跨域实例+日志文件

    本实例将探讨如何通过JSONP(JSON with Padding)解决JavaScript的跨域请求,同时介绍在J2EE环境中如何添加和使用日志文件来跟踪系统运行状态。 首先,我们来看**JS跨域**。跨域主要涉及两个技术:CORS(Cross-...

    asp.net 利用jquery-ajax调用后台方法

    7. **跨域请求** 如果你的AJAX请求需要跨域,可以考虑使用JSONP(JSON with Padding)或者CORS(Cross-Origin Resource Sharing)策略。 8. **ASP.NET MVC中的AJAX调用** 在ASP.NET MVC中,我们可以创建一个...

    简单实现ajax获取跨域数据

    在实际开发中,前端应用往往需要从其他域获取数据,例如使用CDN或者调用第三方服务API,这时就涉及到跨域请求的问题。 跨域请求通常有以下几种解决方案: 1. JSONP (JSON with Padding) 是一种古老的跨域请求技术...

    【ASP.NET编程知识】谈谈如何在ASP.NET Core中实现CORS跨域.docx

    在上述代码中,我们使用 jQuery 发起了一个 GET 请求来获取 `http://localhost:1661/` 的内容,并弹出返回值。 在 ASP.NET Core 中实现 CORS 跨域可以解决浏览器和服务器之间的跨域限制问题,提高了 Web 应用的安全...

    jquery异步跨域访问代码

    6. JSONP跨域技术:在JavaScript中,可以利用script标签不受同源策略限制的特性,通过动态创建script标签的形式来实现跨域请求。JSONP(JSON with Padding)是一种跨域请求的解决方案,适用于GET类型的请求。服务器...

    ajax获取页面返回值

    综上所述,Ajax获取页面返回值涉及创建XMLHttpRequest对象、打开连接、设置回调、发送请求、处理返回值以及错误处理等多个步骤。在实际开发中,还可以结合jQuery、axios等库简化Ajax操作。通过掌握这些知识,你可以...

    最新jquery-2.1.1.js以及jquery-2.1.1.min.js文件

    4. **AJAX**:jQuery的`$.ajax()`和`$.get()`、`$.post()`等函数简化了异步数据请求,让跨域请求变得容易。 5. **动画**:`.fadeIn()`, `.slideToggle()`, `.animate()`等方法让创建复杂的动画效果变得轻松。 6. *...

    PHP中运用jQuery的Ajax跨域调用实现代码

    在Web开发中,跨域(Cross-Origin)是一个常见的问题,它限制了JavaScript从一个源(Origin)向另一...然而,在很多情况下,JSONP仍然是实现跨域请求的一个有效手段,尤其在不支持CORS(跨源资源共享)的旧版浏览器中。

    jQueryPost页面不能刷新

    此时,服务器需要支持CORS(跨源资源共享)或者使用JSONP(JSON with Padding)来允许跨域请求。 7. **AJAX与页面刷新**:AJAX(Asynchronous JavaScript and XML)技术,包括`$.post`,其核心理念就是实现页面的...

    jsonp和跨域1

    这一策略主要是出于安全考虑,防止恶意脚本通过跨域请求窃取数据。 1.1.1 伪静态实现 伪静态是一种技术手段,用于使动态页面看起来像静态HTML页面,以利于搜索引擎抓取和收录。这样做是因为搜索引擎通常更偏好静态...

    JS跨域调用Window服务代码示例

    由于是跨域请求,我们需要使用JSONP(JSON with Padding)或CORS(Cross-Origin Resource Sharing)机制。 例如,使用JSONP: ```javascript function callService(callback) { var script = document....

    jquery-1.7.1

    2. `$.ajax()`更新:jQuery 1.7.1对异步请求的`.ajax()`方法进行了优化,增强了错误处理和数据类型检测,同时支持跨域请求。 3. `.promise()`和`.done()`:这两个方法改进了异步操作的流程控制,`.promise()`返回一...

    jquery电子文档chm

    jQuery 1.2 中,您可以跨域加载 JSON 数据,使用时需将数据类型设置为 JSONP。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。数据类型设置为 "jsonp" 时...

    Jquery1.4.2及帮助文档

    - 对于AJAX请求,`$.ajax()`函数支持JSONP跨域请求,增强了异步数据获取的灵活性。 3. **jQuery API帮助文档** - **chm格式**:这是一种Windows平台上的帮助文档格式,包含索引、搜索等功能,便于开发者快速查找...

    jquery-1.3 包 和 帮助文档

    jQuery 1.3支持JSONP跨域请求,增强了Ajax的灵活性。同时,`$.ajaxStart()`和`$.ajaxStop()`可以监听Ajax请求的开始和结束。 ### 6. 插件机制 jQuery的插件机制是其强大之处,开发者可以通过扩展$.fn对象创建新的...

    JQuery 1.5 API 中文版 html索引版

    JSONP(JSON with Padding)是跨域数据交互的一种解决方案,jQuery 1.5支持JSONP请求,允许从不同源获取数据。 10. **API文档** 提供的中文版API文档对于开发者来说是一大福音,它详细解释了每个方法的功能、参数...

    JQuery1.4.1中文参考离线手册

    - **$.ajax()**: 核心的Ajax方法,支持GET和POST请求,以及JSONP跨域请求。 - **$.get()** 和 **$.post()**: 简化的GET和POST请求方法。 - **$.getJSON()**: 获取JSON数据的便捷方法。 - **$.load()**: 加载服务器...

Global site tag (gtag.js) - Google Analytics