`
8366
  • 浏览: 813218 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

使用Jsonp方式跨域获取json

    博客分类:
  • AJAX
阅读更多

 

 以前遇到过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

 

 

 

 

 

 

分享到:
评论

相关推荐

    利用JQuery jsonp实现Ajax跨域请求json数据

    但为了实现数据交互,开发者常使用JSONP(JSON with Padding)这一技术来规避同源策略,实现在客户端跨域获取JSON数据。本篇文章将详细讲解如何利用jQuery的jsonp方法实现Ajax跨域请求,以及如何在服务器端使用.Net...

    跨域访问禁止以及使用JSONP实现跨域的示例

    在描述中提到的JSONP方式实现跨域访问示例,我们可以创建一个服务端接口,接收回调函数名作为参数,然后返回封装好的JSON数据。在客户端,我们需要定义这个回调函数并处理返回的数据。 总结起来,跨域访问是一个...

    JSONP解决跨域问题

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`&lt;script&gt;`标签可以跨域请求资源的特性,为了解决JavaScript在浏览器端由于同源策略限制无法直接访问不同源的HTTP请求的问题。在本场景中,前端使用...

    Ajax +jquery跨域获取JSON

    JSONP是一种非标准的跨域方法,通过动态插入`&lt;script&gt;`标签,从服务器端获取JSON数据。服务器需要将数据包装在一个函数调用中,客户端定义该函数来接收数据。而CORS则是一种更为现代和安全的跨域方式,需要服务器端...

    html通过 ajax jsonp跨域请求接收和传送数据

    2. **JSONP跨域**: JSONP的工作方式不同,它不依赖于XMLHttpRequest对象。首先,客户端在HTML页面中定义一个全局函数,如`handleData(data)`。然后,创建一个`&lt;script&gt;`标签,将`src`属性设置为服务器的URL,URL中...

    web前端跨域取JSON

    2. **JSONP(JSON with Padding)**:JSONP是早期解决跨域问题的一种方式,它利用了`&lt;script&gt;`标签可以跨域加载资源的特性。服务器返回的不再是JSON数据,而是包含一个JavaScript函数调用,函数名由客户端指定,参数...

    jquery跨域获取json

    标题 "jquery跨域获取json" 涉及到的是JavaScript中的一个常见问题,即如何在浏览器环境中使用jQuery库跨越域限制获取JSON数据。这通常涉及到AJAX请求和JSONP(JSON with Padding)技术。 首先,我们需要理解Web...

    JSONP三种方式解决跨域问题

    1、地址...演示跨域问题以及跨子域名解决方法 2、地址http://a.test.com:8888/testAjaxCross/public/jsonp.do 演示jsonp解决跨域问题的三种方案jsonp、$getJSON、$ajax等

    PHP AJAX JSONP实现跨域请求使用范例_ajax如何解决跨域请求

    在实际应用中,我们可以使用 JSONP 来实现跨域请求,以便从其他域名下的服务器获取数据。但是,我们需要注意的是,使用 JSONP 会存在安全风险,因为它可以被恶意攻击所利用。 在使用 JSONP 时,我们需要注意以下几...

    jsonp解决跨域.docx

    JsonP 的核心原理是:JavaScript 使用 Ajax 无法跨域调用数据(如 XML、JSON 等),但是可以跨域调用 JavaScript 数据。JsonP 的工作原理是通过动态添加一个 script 标签,src 属性指向请求的 URL,返回的数据是一个...

    jQuery使用JSONP实现跨域获取数据的三种方法详解

    本文将详细介绍使用jQuery实现JSONP跨域获取数据的三种方法。 ### 第一种方法:$.ajax()函数 $.ajax()是jQuery中最为通用的Ajax实现方式。要使用JSONP方法,我们需要在$.ajax()函数中设置`dataType`为'jsonp'。...

    跨域访问解决方法-jsonp

    本文将详细探讨JSONP的工作原理以及如何在实际项目中使用它来跨域获取JSON数据。 ### JSONP简介 JSONP全称为"JSON Padding",它并不是JSON的一种新格式,而是一种利用动态创建`&lt;script&gt;`标签来绕过同源策略的技巧...

    JS 使用 JSONP 跨域获取用户IP

    在标题“JS 使用 JSONP 跨域获取用户IP”中,我们可以理解为这个示例将展示如何利用JSONP技术来解决浏览器的同源策略限制,从而获取到用户的IP地址。这在某些场景下非常有用,比如分析用户地理位置、提供个性化服务...

    利用jsonp解决js读取本地json跨域的问题

    标题中的“利用jsonp解决js读取本地json跨域的问题”是指在JavaScript中,由于同源策略的限制,AJAX无法直接从本地文件系统获取JSON数据。然而,JSONP(JSON with Padding)是一种绕过同源策略的技术,尤其适用于GET...

    jsonp和跨域1

    1.3.3 jQuery-JSONP跨域 jQuery提供了JSONP的支持,通过$.ajax方法的dataType参数设置为"jsonp",可以轻松发起JSONP请求。jQuery会自动生成一个唯一的回调函数名,并将其作为参数传递给服务器,服务器返回的数据应以...

    jsonp json ajax跨域调用

    **JSONP**(JSON with Padding)是在解决跨域问题中出现的一种技术手段,尽管它并不属于官方标准,但由于其简单易用,仍然被广泛采用。JSONP的工作原理是利用`&lt;script&gt;`标签不受同源策略限制的特点,通过动态创建并...

    Vue项目中使用jsonp抓取跨域数据的方法

    为了解决这个问题,我们可以使用JSONP(JSON with Padding)技术。Vue.js是一个流行的前端框架,这篇文章主要讨论在Vue项目中如何利用JSONP抓取跨域数据。 首先,我们需要安装JSONP相关的库。在终端中运行`npm ...

    使用JSONP完成HTTP和HTTPS之间的跨域访问

    JSONP(JSON with Padding)是一种跨域访问技术,允许网页从不同域名下的服务器获取数据。它通过动态添加标签来实现跨域访问,绕过同源策略的限制。 知识点二: JSONP 的工作原理 JSONP 的工作原理是通过在页面中...

Global site tag (gtag.js) - Google Analytics