问题描述:
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=设计实验验证推测:二氧化硫的化学性质
分享到:
相关推荐
jQuery,作为一个强大的JavaScript库,提供了便捷的方式来处理这种问题,特别是通过其Ajax功能进行跨域请求。本示例"Jquery跨域Ajax请求测试"将详细讲解如何利用jQuery实现这一功能。 首先,了解同源策略是理解跨域...
JQuery 的 AJAX 功能是实现异步数据交互的核心部分,对于跨域提交参数和接收 JSON 数据的需求,JQuery 提供了多种解决方案。 首先,JQuery 的 AJAX 功能可以使用 `$.post()` 方法来发送 POST 请求,该方法可以取代...
如果 XML 数据源位于不同的域名下,可能需要解决跨域问题。这可以通过在服务器端设置 CORS(跨源资源共享)头或者使用 JSONP(JSON with Padding)实现。 **6. 性能优化** 为了提高性能,可以考虑使用缓存、减少...
【AJAX跨域解决办法】 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下更新部分网页的技术。然而,由于浏览器的同源策略限制,AJAX请求通常只能发送到与当前页面同一源的...
在这里,我们将探讨如何利用jQuery Mobile和Ajax实现跨域请求。 首先,理解什么是跨域请求。由于浏览器的安全策略,JavaScript通常被限制在同源策略之下,即只能访问与当前页面相同协议、域名和端口的资源。但有时...
### ASP.NET配合jQuery解决跨域调用的问题 #### 跨域问题概述 在现代Web开发中,跨域问题是一个常见的安全限制机制。浏览器为了保护用户的隐私数据,实施了同源策略(Same-origin policy)。该政策规定,来自不...
**Ajax跨域详解** 在Web开发中,Ajax(Asynchronous JavaScript and XML)技术允许我们实现页面的...通过分析这些文件,开发者可以更好地理解和实践Ajax跨域的解决方案,确保在实际项目中能够顺利地进行跨域数据交互。
以下是实现AJAX跨域调用WCF服务的具体步骤和相关知识点: 1. **开启WCF服务的跨域支持**:在WCF服务的配置文件(通常是ServiceName.svc.cs或IServiceName.cs)中,需要启用跨域资源共享(CORS)。这可以通过添加`...
二、Ajax跨域的解决方案 1. JSONP(JSON with Padding) JSONP是一种古老的跨域方式,通过动态创建`<script>`标签,其src属性指向提供服务的API。API会返回一个JavaScript函数调用,带有数据作为参数,这样就能绕过...
总结,Ajax跨域请求是现代Web开发中解决不同源之间数据交互的重要手段。JSONP和CORS是两种主要的实现方式,前者适用于简单的GET请求,后者则提供更全面的安全控制。jQuery等库则为我们简化了跨域请求的实现过程。...
CORS(Cross-Origin Resource Sharing)是现代浏览器支持的跨域访问方式,jQuery AJAX通过设置请求头来实现。需要服务器端配合设置响应头,允许特定的跨域请求。 综上所述,jQuery AJAX简化了JavaScript中的异步...
使用jQuery库进行Ajax跨域POST请求,可以这样写: ```javascript $.ajax({ type: 'POST', url: 'http://example.com/api/data', // 目标URL data: {key: 'value'}, // 发送的数据 crossDomain: true, // 开启...
这里将详细讲解如何通过jQuery的AJAX实现跨域请求。 首先,了解什么是CORS(Cross-Origin Resource Sharing,跨源资源共享)。CORS是一种机制,它使用额外的HTTP头来告诉浏览器允许一个域上的网页访问另一个域上的...
- **跨域问题**:如果涉及到跨域请求,需要服务器端进行相应的配置支持 CORS(Cross-Origin Resource Sharing)。 - **安全性考虑**:在处理用户提交的数据时,要注意防止 XSS 攻击。 综上所述,jQuery 的 AJAX ...
【Ajax跨域请求WebService.asmx】是一个常见的Web开发技术应用场景,主要涉及到JavaScript的Ajax技术、C#编程语言以及ASP.NET的WebService组件。Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的...
这里的"Ajax + jQuery跨域获取JSON"是一个典型的Web开发技术应用场景,主要用于解决Web应用程序中不同源之间的数据共享问题。在本案例中,开发者成功地实现了跨域请求以获取JSON数据,并将这些数据用于展示天气预报...
在进行Web开发时,我们经常会遇到跨域问题,特别是在使用jQuery的`$.ajax`进行Ajax请求时,如果请求的目标不在同一个源下,浏览器会因为同源策略限制而阻止请求。然而,有时候我们需要在跨域请求中传递一些自定义的...
这个"ajax跨域请求demo.zip"压缩包提供了一个关于如何实现Ajax跨域请求的示例,涉及到前后端的交互。 首先,我们关注"前端代码"部分。前端通常使用JavaScript库如jQuery来实现Ajax请求。jQuery的`$.ajax()`方法是...
在当今的Web开发中,jQuery AJAX(异步JavaScript和XML)技术扮演着至关重要的角色。它允许开发者在不刷新整个页面的情况下与服务器进行数据交换,提高了用户体验,使得网页交互更加流畅。本篇文章将深入解析jQuery...
在实际应用中,可能还需要处理跨域请求、缓存策略、进度回调等问题。总的来说,jQuery的AJAX功能强大且灵活,能够满足各种复杂的前后台数据传输需求。结合适当的服务器端接口,可以构建出高效、响应式的Web应用。