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

解决jQuery的AJAX跨域取xml问题

阅读更多
问题描述:
1.根据已知的url,获取url中的id,然后拼接出另一个url,去获取该id对应的值。
举例:
已知url:http://video.guoshi.com/play/index/4b6a3c233b4cb.html?peixun=1&start=680000
获取id 为:4b6a3c233b4cb
拼接的url:http://video.guoshi.com/rest-video?id=4b6a3c233b4cb
2.通过浏览器可以观察到上面url的内容是:
  <?xml version="1.0" encoding="utf-8" ?> 
<packet version="1.0.0">
  <status>success</status> 
 <data>
 <item>
  <id>4b6a3c233b4cb</id> 
  <count_view>43</count_view> 
  <updated>2010-03-04 17:08:28</updated> 
  </item>
  </data>
  </packet>

3.目标就是取到这个xml中的<count_view>43</count_view>的41
4.采用jQuery的ajax实现.

问题:这个url跟我的系统不是同一个域.涉及到了ajax的跨域问题.由于不能通过修改用户IE的 Internet选项-安全-自定义安全-跨域浏览资源 启用 ,所以这个问题就显得棘手了。

5.思路:
1)自己做一个servlet,让ajax访问自己的servlet来获取这个xml.
2)servlet接收id参数.然后输出对应的xml
3)servlet中采用java的HttpURLConnection来获取原地址的源代码,然后输出.
4)注意设置编码utf-8,类型text/xml

6.servlet:GetClickNum
public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		
		String id=request.getParameter("id");
		String url="http://video.guoshi.com/rest-video?id="+id;
		String curLine = "";
		String content = "";
		URL server=new URL(url);
		HttpURLConnection connection = (HttpURLConnection) server.openConnection();
		connection.connect();
		InputStream is = connection.getInputStream();
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		while ((curLine = reader.readLine()) != null) {
			content = content + curLine + "";
		}
		is.close();
		response.setContentType("text/xml");
		response.setCharacterEncoding("utf-8");
		
		ServletOutputStream   out = response.getOutputStream();
		out.print(content);
	}

这样原来的 http://video.guoshi.com/rest-video?id=4b6a3c233b4cb
就转换成 /GetClickNum?id=4b6a3c233b4cb
跨域问题解决!

7.js
$('#rows').find('li').each(function(){
		var url=$(this).find('a[id=videoUrl]').attr('href');
		var b=url.lastIndexOf('index');
		var e=url.lastIndexOf('.');
		var id= url.substring(b+6,e); //the id
		var $li=$(this);
		$.ajax({
			type:"POST",
			url :"GetClickNum",
			data:"id="+id,
			timeout:10000,
			success : function(xml) {
					var val=$(xml).find("data>item>count_view").text();
					$li.find('b[id=click]').html("点击量:"+val);
					//alert(val);
				}
			});
	});


总结:
本文解决ajax跨域问题的思路就是将跨域变成不跨域.将对方服务器的servlet功能由自己的servlet来实现!

具体应用:
http://www.guoshi.com/trainDetails.jsp?q=设计实验验证推测:二氧化硫的化学性质


分享到:
评论
1 楼 sscsacdsadcsd 2016-01-05  
nginx之类做下反代就好了...当然是一个意思

其实我想的是有没更简单的...

相关推荐

    Jquery跨域Ajax请求测试

    jQuery,作为一个强大的JavaScript库,提供了便捷的方式来处理这种问题,特别是通过其Ajax功能进行跨域请求。本示例"Jquery跨域Ajax请求测试"将详细讲解如何利用jQuery实现这一功能。 首先,了解同源策略是理解跨域...

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

    JQuery 的 AJAX 功能是实现异步数据交互的核心部分,对于跨域提交参数和接收 JSON 数据的需求,JQuery 提供了多种解决方案。 首先,JQuery 的 AJAX 功能可以使用 `$.post()` 方法来发送 POST 请求,该方法可以取代...

    JQuery+AJAX处理XML数据

    如果 XML 数据源位于不同的域名下,可能需要解决跨域问题。这可以通过在服务器端设置 CORS(跨源资源共享)头或者使用 JSONP(JSON with Padding)实现。 **6. 性能优化** 为了提高性能,可以考虑使用缓存、减少...

    ajax跨域解决办法

    【AJAX跨域解决办法】 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下更新部分网页的技术。然而,由于浏览器的同源策略限制,AJAX请求通常只能发送到与当前页面同一源的...

    juery mobile使用ajax跨域请求服务器的小实例

    在这里,我们将探讨如何利用jQuery Mobile和Ajax实现跨域请求。 首先,理解什么是跨域请求。由于浏览器的安全策略,JavaScript通常被限制在同源策略之下,即只能访问与当前页面相同协议、域名和端口的资源。但有时...

    ASP.NET配合jQuery解决跨域调用的问题.txt

    ### ASP.NET配合jQuery解决跨域调用的问题 #### 跨域问题概述 在现代Web开发中,跨域问题是一个常见的安全限制机制。浏览器为了保护用户的隐私数据,实施了同源策略(Same-origin policy)。该政策规定,来自不...

    Ajax跨域详解与代码

    **Ajax跨域详解** 在Web开发中,Ajax(Asynchronous JavaScript and XML)技术允许我们实现页面的...通过分析这些文件,开发者可以更好地理解和实践Ajax跨域的解决方案,确保在实际项目中能够顺利地进行跨域数据交互。

    ajax跨域调用wcf实例

    以下是实现AJAX跨域调用WCF服务的具体步骤和相关知识点: 1. **开启WCF服务的跨域支持**:在WCF服务的配置文件(通常是ServiceName.svc.cs或IServiceName.cs)中,需要启用跨域资源共享(CORS)。这可以通过添加`...

    Ajax跨域访问(ASP.NET Web)

    二、Ajax跨域的解决方案 1. JSONP(JSON with Padding) JSONP是一种古老的跨域方式,通过动态创建`&lt;script&gt;`标签,其src属性指向提供服务的API。API会返回一个JavaScript函数调用,带有数据作为参数,这样就能绕过...

    ajax跨域请求

    总结,Ajax跨域请求是现代Web开发中解决不同源之间数据交互的重要手段。JSONP和CORS是两种主要的实现方式,前者适用于简单的GET请求,后者则提供更全面的安全控制。jQuery等库则为我们简化了跨域请求的实现过程。...

    jqueryajax jquery ajax

    CORS(Cross-Origin Resource Sharing)是现代浏览器支持的跨域访问方式,jQuery AJAX通过设置请求头来实现。需要服务器端配合设置响应头,允许特定的跨域请求。 综上所述,jQuery AJAX简化了JavaScript中的异步...

    ajax跨域post(java例子)

    使用jQuery库进行Ajax跨域POST请求,可以这样写: ```javascript $.ajax({ type: 'POST', url: 'http://example.com/api/data', // 目标URL data: {key: 'value'}, // 发送的数据 crossDomain: true, // 开启...

    ajax处理跨域请求

    这里将详细讲解如何通过jQuery的AJAX实现跨域请求。 首先,了解什么是CORS(Cross-Origin Resource Sharing,跨源资源共享)。CORS是一种机制,它使用额外的HTTP头来告诉浏览器允许一个域上的网页访问另一个域上的...

    jquery ajax源代码

    - **跨域问题**:如果涉及到跨域请求,需要服务器端进行相应的配置支持 CORS(Cross-Origin Resource Sharing)。 - **安全性考虑**:在处理用户提交的数据时,要注意防止 XSS 攻击。 综上所述,jQuery 的 AJAX ...

    ajax跨域请求WebService.asmx

    【Ajax跨域请求WebService.asmx】是一个常见的Web开发技术应用场景,主要涉及到JavaScript的Ajax技术、C#编程语言以及ASP.NET的WebService组件。Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的...

    Ajax +jquery跨域获取JSON

    这里的"Ajax + jQuery跨域获取JSON"是一个典型的Web开发技术应用场景,主要用于解决Web应用程序中不同源之间的数据共享问题。在本案例中,开发者成功地实现了跨域请求以获取JSON数据,并将这些数据用于展示天气预报...

    ajax跨域请求demo.zip

    这个"ajax跨域请求demo.zip"压缩包提供了一个关于如何实现Ajax跨域请求的示例,涉及到前后端的交互。 首先,我们关注"前端代码"部分。前端通常使用JavaScript库如jQuery来实现Ajax请求。jQuery的`$.ajax()`方法是...

    传智播客 jQuery ajax 课件

    在当今的Web开发中,jQuery AJAX(异步JavaScript和XML)技术扮演着至关重要的角色。它允许开发者在不刷新整个页面的情况下与服务器进行数据交换,提高了用户体验,使得网页交互更加流畅。本篇文章将深入解析jQuery...

    Jquery Ajax 前后台数据传输

    在实际应用中,可能还需要处理跨域请求、缓存策略、进度回调等问题。总的来说,jQuery的AJAX功能强大且灵活,能够满足各种复杂的前后台数据传输需求。结合适当的服务器端接口,可以构建出高效、响应式的Web应用。

    ajax跨域的JQ类 flXHR

    总的来说,flXHR是一个实用的工具,它利用Flash技术解决了Ajax跨域的问题,使得开发者可以在不违背浏览器同源策略的前提下,实现跨域数据交互。虽然现在有更先进的替代方案,但在某些场景下,flXHR仍具有其独特的...

Global site tag (gtag.js) - Google Analytics