全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Ajax跨域实现代码(后台jsp)

AJAX 教程

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

在应用时主要是创建XMLHttpRequest对象,调用指定服务地址。

但是IE中各个版本支持的不太一样,所以在创建次对象时可能要特殊处理下。

一般如下:

function createXMLHttpRequest(){
 var xmlhttp;
 try{
  xmlhttp = new XMLHttpRequest();//ie7及以上,其他浏览器
 }catch(e){
  try{
   xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");//ie6
  }catch(e){
   try{
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");//ie6以下
   }catch(e){
    throw "创建AJAX对象失败!";
   }
  }
 }
 return xmlhttp;
 }


 var xmlhttp = createXMLHttpRequest();
  xmlhttp.open("GET","http://localhost:8080/SimpleBlog/AjaxTest",true);
  xmlhttp.send(null);
  xmlhttp.onreadystatechange = function(result){
  if(xmlhttp.readyState==4 && xmlhttp.status == 200){
   alter(result.test);
  }
 };

但是浏览器再执行javascript代码时,有个著名的同源策略,这使得跨域请求就不是那么方便了。

那一般都是用什么方式支持跨域呢?

1、通过中间代理服务器,获取要跨域请求的数据。

2、通过iframe内嵌带请求域的页面,来解决跨域访问问题。

3、通过jsonp方式。

4、不过现在已经提出了XMLHttpRequest Level2(XHR2)允许跨域请求,不过要在server的返回头中显示声明允许跨域请求(浏览器的支持情况:http://caniuse.com/#feat=xhr2)。

下面简单说下jsonp与xtr2。

jsonp:

jsonp简单的说就是利用<script>标签来实现跨域请求的调用,因为浏览器中脚本的加载是不受同源策略影响的。

function get() {
  var url = 'http://localhost:8080/SimpleBlog/AjaxTest?callback=callback';
  var script = document.createElement('script'); 
  script.setAttribute("type","text/javascript"); 
  script.src = url; 
  document.body.appendChild(script); 
 }
 
 function callback(va){
  alert(va.test);
 }

服务端(java):

 boolean jsonP = false;
 String cb = this.request.getParameter("callback");
 if (cb != null) {
 jsonP = true;
 response.setContentType("text/javascript");
 } else {
  response.setContentType("application/x-json");
 }
 PrintWriter out = response.getWriter();
 if (jsonP) {
  try {
   out.println(cb + "({\"test\":\"1\"})");
   out.flush();
   out.close();
  } catch (Exception e) {
   throw e;
  }
 }

这样就可以实现跨域调用了。

而我们经常用的jquery已经实现了此类方式的封装,使用起来更简单。

$(document).ready(function (){
  $('#jqueryajax').bind('click', function(){
  $.ajax({
   type: 'get',
   async: false,
   url: 'http://localhost:8080/SimpleBlog/AjaxTest1',
   dataType: 'jsonp',
   jsonp: 'callback',
   success: function(json){
    alert(json.result);
   },
   error: function(){
    alert('fail');
   }
  });
  });
 });

服务端(java):
我用了struts是这样写的:

public class AjaxTest1 extends ActionSupport {

 private String result;
 public String getResult() {
  return result;
 }
 
 public String execute() {
 
  this.result = "1";
  return "jqueryajax";
 }
}

配置文件:

<action name="AjaxTest1" class="AjaxTest1">
 <result name="jqueryajax" type="json">
  <param name="callbackParameter">callback</param>
 </result>
 </action>

下面说说xtr2:

这个就更简单了,直接创建调用即可。

function createCORSRequest(method,url){
  var xhr=new XMLHttpRequest();
  if('withCredentials' in xhr){
  xhr.open(method,url,true);
  }else if(typeof XDomainRequest!='undefined'){
   xhr=new XDomainRequest(); 
   xhr.open(method,url);
  }else{
   xhr=null;
  }
  return xhr;
 }
 
 function xhr2(){
  var request=createCORSRequest('GET','http://localhost:8080/SimpleBlog/AjaxTest1');
  if(request){
  request.onload=function(){
   alert(request.responseText);
  }
  request.onerror=function(e){
   alert('error');
  }
  request.send();
  } 
 }

服务端:其实只要在返回response中设置
httpResponse.addHeader("Access-Control-Allow-Origin", "*");
即可。


# Ajax  # 跨域  # jsp用过滤器解决中文乱码问题的方法  # 浅谈jsp九大内置对象及四个作用域  # JSP页面跳转方法小结  # jsp+servlet+jdbc实现对数据库的增删改查  # BootStrap在jsp中的使用  # 详解java集成支付宝支付接口(JSP+支付宝20160912)  # JSP实现登录功能之添加验证码  # JSP防止网页刷新重复提交数据的几种方法  # 在JSP中如何实现MD5加密的方法  # JSP request.setAttribute()详解及实例  # 服务端  # 都是  # 有个  # 的说  # 不太  # 是这样  # 提出了  # 要在  # 用了  # 不受  # 此类  # 那一  # 就更  # 来实现  # 代理服务器  # 配置文件  # 就可以  # 内嵌  # 主要是  # 便了 


相关文章: 免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  建站主机空间推荐 高性价比配置与快速部署方案解析  python的本地网站制作,如何创建本地站点?  如何注册花生壳免费域名并搭建个人网站?  如何快速选择适合个人网站的云服务器配置?  如何快速查询网站的真实建站时间?  建站之家VIP精选网站模板与SEO优化教程整合指南  网站制作新手教程,新手建设一个网站需要注意些什么?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  建站主机选购指南:核心配置优化与品牌推荐方案  如何选择可靠的免备案建站服务器?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  如何在万网ECS上快速搭建专属网站?  如何制作一个表白网站视频,关于勇敢表白的小标题?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何通过云梦建站系统实现SEO快速优化?  如何在阿里云部署织梦网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  如何获取PHP WAP自助建站系统源码?  如何选择高效可靠的多用户建站源码资源?  如何快速搭建个人网站并优化SEO?  如何配置支付宝与微信支付功能?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  建站之星北京办公室:智能建站系统与小程序生成方案解析  ,石家庄四十八中学官网?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  简单实现Android验证码  济南网站建设制作公司,室内设计网站一般都有哪些功能?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  建站之星客服服务时间及联系方式如何?  七夕网站制作视频,七夕大促活动怎么报名?  代刷网站制作软件,别人代刷火车票靠谱吗?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  如何挑选最适合建站的高性能VPS主机?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  建站之星如何快速更换网站模板?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  ui设计制作网站有哪些,手机UI设计网址吗?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  宝塔新建站点报错如何解决?  如何在万网主机上快速搭建网站?  魔方云NAT建站如何实现端口转发?  网站制作公司排行榜,四大门户网站排名?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何在建站之星网店版论坛获取技术支持?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  成都网站制作公司哪家好,四川省职工服务网是做什么用? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。