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

ajax跨越请求

阅读更多

ajax跨越请求

 

ajax的跨域(其实我也不知道我这个是ajax跨域还是js跨域,暂时就叫ajax跨越吧)问题一直是个头痛的问题,一直想避开这个问题,哎,可惜避不过啊。最近一个项目里就必须用了。在网上找了一下,有的没说清(呵呵,可能是我的理解能力差),有的不好实施,最后好不容易找到一篇,自己总结了下,跟大家分享。原理很简单,就是动态生成一个script标签,src指向需要访问的jsp或servlet,然后jsp或servlet,输出一个可执行的js方法,这么说可能大家容易晕。所以直接看代码吧,呵呵。

 

一开始是jsp代码,很简单就是一个按钮,点击的时候执行一个test方法。

<input type="button" onclick="test();" value="TEST"/>

 

 

以下是几个封转好的js方法,大家不要看代码多,一切都已经封装好,只需要知道怎么掉就行了,呵呵

 

 

function JSONscriptRequest(url){
  	this.fullUrl=url;
  	this.noCacheIE='&dtm='+new Date().getTime();
  	this.headLoc=document.getElementsByTagName("head").item(0);
}

JSONscriptRequest.prototype = {

	buildScriptTag:function(){

		  this.scriptObj=document.createElement("script");
	
		  this.scriptObj.setAttribute("type","text/javascript");
	
		  this.scriptObj.setAttribute("id",this.scriptId);
	
		  this.scriptObj.setAttribute("src",this.fullUrl+this.noCacheIE);

	},
	removeScriptTag:function(){
	 	 this.headLoc.removeChild(this.scriptObj); 
	
	},
	addScriptTag:function(){
	 	this.headLoc.appendChild(this.scriptObj);
	}

}

function sendRequestServer(params,callback) {
	
	var requestServerUrl="http://localhost:8080/testAjax/TestServlet";
	var requestURL=requestServerUrl+"?"+params+"&cbk="+callback;
	var jreq = new JSONscriptRequest(requestURL);
	jreq.buildScriptTag();
	jreq.addScriptTag();
}

 

 

接下来是点击页面上的按钮时需要执行的方法。

 

 

function test(){
	var params='method=test';
	sendRequestServer(params,'callback');
		
}

 

以下是回调函数

 

function callback(jsondata){
	for(var i=0;i<jsondata.length;i++){
		 alert(jsondata[i]);
	}
}

 

接下来是servlet中代码

 

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        //下面这句具体是干什么的我也不太清楚,呵呵,有知道的希望大家能告我一下
        response.setHeader("P3P","CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\"");
        response.setCharacterEncoding("utf-8");
        request.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        String method =request.getParameter("method");
        String cbk=request.getParameter("cbk");
        if("test".equals(method)){
            List<String> list= new ArrayList<String>();
            list.add("ssss1");
            list.add("ssss2");
            list.add("ssss3");
          //转为json,不习惯用json的,可以拼字符串,用json的话, list里可以放对象,方便js调用
            String callback=cbk+"("+MyJSONUtils.toJSONString(list)+");";
            //callback 字符串,其实就是拼了一个前台需要执行的js方法
            out.print(callback);
        }
    }

 

在servlet中返回的是json,也可以是字符串,json所需jar包不好找,我已经打包好,上传到  http://xuedong.iteye.com/admin/blogs/1115064大家可以下载使用,都是经过测试的。以上就是全部代码了,我都测试过可以使用,我一会把项目打包上传上来。呵呵,有什么不合适的,希望大家指出来,大家共同进步,如果用着有问题可以留言问我。呵呵.

 

转载请注明出处,谢谢。http://xuedong.iteye.com/admin/blogs/1134948

 

3
3
分享到:
评论
1 楼 cnnewjohn 2011-07-28  
P3P 貌似多站点跨域COOKIE常用

相关推荐

    Ajax跨域请求解决方案-JSONP

    然而,Ajax技术在实现动态网页交互时常常需要跨越这个限制,这时就引入了JSONP(JSON with Padding)作为跨域请求的一种解决方案。本文将详细介绍JSONP的工作原理以及如何在ASP.NET网站开发中应用JSONP解决Ajax跨域...

    Ajax与跨站点请求伪造漏洞

    - 攻击者需要确保受害者的浏览器能够跨越不同的域名发起请求。 **被攻击后的损失:** - 数据泄露:例如,未经授权修改账户设置、获取敏感信息等。 - 资金损失:例如,非法转账等。 - 权限滥用:例如,执行管理员...

    详解Spring Boot 2.0.2+Ajax解决跨域请求的问题

    "详解Spring Boot 2.0.2+Ajax解决跨域请求的问题" 知识点1:什么是跨域请求? 跨域请求是指浏览器从一个域名下的网页去请求另一个域名下的资源时,会出现的安全限制问题。该限制是因为浏览器的同源策略(Same-...

    ajax 示例源码(经典)

    6. **跨域请求**:如果Ajax请求跨越了同源策略的限制,就需要用到CORS(Cross-Origin Resource Sharing)机制。在源码中,可能会看到如何设置请求头`Access-Control-Allow-Origin`来允许跨域请求。 7. **Promise和...

    跨越边界 Ajax on Rails

    **Ajax on Rails:跨越边界的Web交互技术** Ajax(Asynchronous JavaScript and XML)技术的引入,为Web应用程序带来了革命性的变化,它使得页面无需刷新就能实现数据的动态更新,极大地提升了用户体验。Rails作为...

    ajax跨域问题的解决办法

    ajax跨域问题是指在使用ajax技术时遇到的跨域限制问题,即ajax请求不能跨域访问其他域的服务器资源。这种限制是由于浏览器的同源策略所引起的,同源策略规定一个域下的脚本只能访问该域下的资源,而不能访问其他域下...

    Net下使用Ajax

    当Ajax请求跨越不同的源(域、协议或端口)时,会遇到跨域问题。解决跨域通常需要在服务器端配置CORS(Cross-Origin Resource Sharing)策略,允许特定的源进行访问。 以上就是.NET环境下使用Ajax的相关知识点,...

    Ajax网站开发典型实例JSP源码包

    如果Ajax请求跨越了不同的域名,会遇到同源策略限制。开发者可能使用JSONP(JSON with Padding)或CORS(Cross-Origin Resource Sharing)来解决这个问题。 这个源码包提供了一个实践平台,让你深入理解Ajax与JSP...

    AJAX跨域请求json数据的实现方法

    由于同源策略的限制,普通的AJAX请求不能跨越域名进行通信,但JSONP巧妙地绕过了这一限制。 在jQuery中,JSONP的实现主要依赖于`jQuery.getJSON`或`jQuery.ajax`方法。以`jQuery.getJSON`为例,下面是如何使用它的...

    跨越边界1:Ajax on Rails

    【标题】:“跨越边界1:Ajax on Rails” 【描述】:本文主要探讨了Ajax技术如何与Ruby on Rails框架相结合,创造出高度交互性的Web应用。Ajax技术利用XML、JavaScript和Web标准,通过异步通信增强用户体验,而Ruby...

    ajax_jar包

    这个jar包很可能包含了处理Ajax请求和响应的核心类,以及与JSON(JavaScript Object Notation)数据格式交互的工具。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,是Ajax通信中...

    ajax提交中文到servlet

    如果Ajax请求跨越了不同的源,需要处理跨域问题。这可以通过在Servlet中设置响应头Access-Control-Allow-Origin来允许特定来源的请求。 总结,"ajax提交中文到servlet"涉及到的主要知识点包括Ajax的基本使用、中文...

    thinkphp ajax实例

    5. **跨域问题**:如果Ajax请求跨越了不同的源,需要处理跨域问题。在ThinkPHP中,可以在`app\common\behavior\CrossDomain.php`行为类中设置跨域响应头: ```php public function run() { header('Access-...

    asp.net的ajax传值

    10. **跨域问题**:如果AJAX请求跨越了不同的域名,需要处理跨域资源共享(CORS)问题。ASP.NET提供了配置IIS服务器和Web.config的方法来允许跨域请求。 综上所述,"asp.net的ajax传值"涉及到ASP.NET AJAX框架的...

    Ajax IBM官方Ajax学习文档

    了解和使用CORS(跨源资源共享)可以让Ajax跨越不同的源进行数据交换。 8. Ajax库和框架:虽然可以手动实现Ajax功能,但使用像jQuery、Prototype或AngularJS这样的库和框架能大大简化开发工作。这些库提供了更高...

    ajax详细教程。。。

    7. **跨域问题**:出于安全考虑,浏览器默认不允许Ajax请求跨越域名。不过,通过JSONP(JSON with Padding)或者CORS(Cross-Origin Resource Sharing)策略,可以实现跨域请求。 8. **兼容性**:早期,Ajax主要...

    ajax跨域调用wcf实例

    然而,由于浏览器的安全策略,AJAX请求通常受到同源策略的限制,即只能向同源(协议、域名、端口相同)的URL发送请求。当需要跨越不同的源进行通信时,我们称之为“跨域”。 WCF(Windows Communication Foundation...

    jsp中使用ajax实现web进度条

    如果AJAX请求跨越了不同的源,可能会触发同源策略限制。要解决这个问题,Servlet需要设置合适的CORS响应头,允许来自指定源的请求。 7. **前端框架和库**: 虽然可以纯JavaScript实现,但现代Web开发中,常常使用...

    Ajax电子教程(PPT)

    12. **跨域Ajax**:探讨CORS(跨源资源共享)机制,如何允许Ajax请求跨越不同的域名。 13. **安全性考量**:讲解使用Ajax时应注意的安全问题,如XSS(跨站脚本攻击)和CSRF(跨站请求伪造)。 通过这个全面的Ajax...

Global site tag (gtag.js) - Google Analytics