以前遇到过ajax跨域的问题,自己也写过一个简单的servlet 请求代理 来解决过同源策略带来的ajax跨域问题,详细见这个
http://8366.iteye.com/blog/452441
今天在网上发现 使用JQuery+Jsonp 也可以解决ajax跨域问题
首先看下 jsonp 是如何解决跨域问题的,详细见 下面两篇文章
使用 JSONP 实现跨域通信,第 1 部分: 结合 JSONP 和 jQuery 快速构建强大的 mashup
http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/
使用 JSONP 实现跨域通信,第 2 部分: 使用 JSONP、jQuery 和 Yahoo! 查询语言构建 mashup
http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp2/
一个JQuery+jsnop 跨域的例子
步骤:
1.在tomcat中配置两个web项目 一个是 /oa ,一个是/jofc2
2.在/oa项目中有个testJQuery.jsp 中发送一个ajax请求到 http://localhost:9090/jofc2/ajax.jsp?callback=? 这是一个跨域请求
3.在testJQuery.jsp 中接受跨域请求的结果
实现步骤:
1. ajax请求代码 必须是get方式
//使用jsonp 跨域访问
$.ajax({
type: "get",
//url: "http://www.cnblogs.com/rss",
// url: "http://suggest.taobao.com/sug?code=utf-8&q=mp3&callback=callback",
url: "http://localhost:9090/jofc2/ajax.jsp?callback=?",
// url: "http://133.64.80.9:9082/bz/ajax.jsp?callback=?",
beforeSend: function(XMLHttpRequest){
//ShowLoading();
},
dataType : "jsonp",
jsonp: 'callback',
success: function(data,textStatus){
$("#loadrss").html("1234");
//alert(textStatus);
alert(data.length);
alert(data[0].name);
alert(data[1].name);
$(data).each(function(i, item){
//jquery 处理html 数据 ,找title 元素
//$("#loadrss").append("<li>"+$(domEle).children("title").text()+"</li>");
//jquery 处理Json 数据
$("#loadrss").append("<li>"+item.name+"</li>");
});
},
complete: function(XMLHttpRequest, textStatus){
//HideLoading();
},
error: function(){
//请求出错处理
}
});
2. 服务器端 业务处理,把处理结果写到输出流里 注意输出流利json串的写法
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@page import="java.io.PrintWriter"%>
<%
//服务器端接到回调函数名字输出回调函数,客户端根据回调函数进行解析取得函数中json对象
response.setContentType("text/html; charset=utf-8");
String callback=request.getParameter("callback");
PrintWriter ss = response.getWriter();
ss.print(callback+"([ { name:\"跨域访问成功!\"},{ name:\"跨域访问失败!\"}])");
%>
3.这样前台就可以跨域访问资源了,这种解决方案不足之处是:a.服务器端和客户端必须都按照jsnop的方式 b.不能捕获异常
4.测试时候 访问 http://localhost:9090/oa/testJQuery.jsp
分享到:
相关推荐
但为了实现数据交互,开发者常使用JSONP(JSON with Padding)这一技术来规避同源策略,实现在客户端跨域获取JSON数据。本篇文章将详细讲解如何利用jQuery的jsonp方法实现Ajax跨域请求,以及如何在服务器端使用.Net...
在描述中提到的JSONP方式实现跨域访问示例,我们可以创建一个服务端接口,接收回调函数名作为参数,然后返回封装好的JSON数据。在客户端,我们需要定义这个回调函数并处理返回的数据。 总结起来,跨域访问是一个...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性,为了解决JavaScript在浏览器端由于同源策略限制无法直接访问不同源的HTTP请求的问题。在本场景中,前端使用...
JSONP是一种非标准的跨域方法,通过动态插入`<script>`标签,从服务器端获取JSON数据。服务器需要将数据包装在一个函数调用中,客户端定义该函数来接收数据。而CORS则是一种更为现代和安全的跨域方式,需要服务器端...
2. **JSONP跨域**: JSONP的工作方式不同,它不依赖于XMLHttpRequest对象。首先,客户端在HTML页面中定义一个全局函数,如`handleData(data)`。然后,创建一个`<script>`标签,将`src`属性设置为服务器的URL,URL中...
2. **JSONP(JSON with Padding)**:JSONP是早期解决跨域问题的一种方式,它利用了`<script>`标签可以跨域加载资源的特性。服务器返回的不再是JSON数据,而是包含一个JavaScript函数调用,函数名由客户端指定,参数...
标题 "jquery跨域获取json" 涉及到的是JavaScript中的一个常见问题,即如何在浏览器环境中使用jQuery库跨越域限制获取JSON数据。这通常涉及到AJAX请求和JSONP(JSON with Padding)技术。 首先,我们需要理解Web...
1、地址...演示跨域问题以及跨子域名解决方法 2、地址http://a.test.com:8888/testAjaxCross/public/jsonp.do 演示jsonp解决跨域问题的三种方案jsonp、$getJSON、$ajax等
在实际应用中,我们可以使用 JSONP 来实现跨域请求,以便从其他域名下的服务器获取数据。但是,我们需要注意的是,使用 JSONP 会存在安全风险,因为它可以被恶意攻击所利用。 在使用 JSONP 时,我们需要注意以下几...
JsonP 的核心原理是:JavaScript 使用 Ajax 无法跨域调用数据(如 XML、JSON 等),但是可以跨域调用 JavaScript 数据。JsonP 的工作原理是通过动态添加一个 script 标签,src 属性指向请求的 URL,返回的数据是一个...
本文将详细介绍使用jQuery实现JSONP跨域获取数据的三种方法。 ### 第一种方法:$.ajax()函数 $.ajax()是jQuery中最为通用的Ajax实现方式。要使用JSONP方法,我们需要在$.ajax()函数中设置`dataType`为'jsonp'。...
本文将详细探讨JSONP的工作原理以及如何在实际项目中使用它来跨域获取JSON数据。 ### JSONP简介 JSONP全称为"JSON Padding",它并不是JSON的一种新格式,而是一种利用动态创建`<script>`标签来绕过同源策略的技巧...
在标题“JS 使用 JSONP 跨域获取用户IP”中,我们可以理解为这个示例将展示如何利用JSONP技术来解决浏览器的同源策略限制,从而获取到用户的IP地址。这在某些场景下非常有用,比如分析用户地理位置、提供个性化服务...
标题中的“利用jsonp解决js读取本地json跨域的问题”是指在JavaScript中,由于同源策略的限制,AJAX无法直接从本地文件系统获取JSON数据。然而,JSONP(JSON with Padding)是一种绕过同源策略的技术,尤其适用于GET...
1.3.3 jQuery-JSONP跨域 jQuery提供了JSONP的支持,通过$.ajax方法的dataType参数设置为"jsonp",可以轻松发起JSONP请求。jQuery会自动生成一个唯一的回调函数名,并将其作为参数传递给服务器,服务器返回的数据应以...
**JSONP**(JSON with Padding)是在解决跨域问题中出现的一种技术手段,尽管它并不属于官方标准,但由于其简单易用,仍然被广泛采用。JSONP的工作原理是利用`<script>`标签不受同源策略限制的特点,通过动态创建并...
为了解决这个问题,我们可以使用JSONP(JSON with Padding)技术。Vue.js是一个流行的前端框架,这篇文章主要讨论在Vue项目中如何利用JSONP抓取跨域数据。 首先,我们需要安装JSONP相关的库。在终端中运行`npm ...
JSONP(JSON with Padding)是一种跨域访问技术,允许网页从不同域名下的服务器获取数据。它通过动态添加标签来实现跨域访问,绕过同源策略的限制。 知识点二: JSONP 的工作原理 JSONP 的工作原理是通过在页面中...