麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > AJAX > 正文

Ajax跨域實現代碼(后臺jsp)

2024-09-01 08:33:50
字體:
來源:轉載
供稿:網友

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", "*");
即可。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产一级毛片视频在线! | 久久看视频 | 91短视频在线免费观看 | 亚洲国产精品一区二区精品 | 国产亚洲精品久久午夜玫瑰园 | 成码无人av片在线观看网站 | 欧美精品色精品一区二区三区 | 伦一区二区三区中文字幕v亚洲 | 国产精品视频不卡 | 特级a欧美做爰片毛片 | 一区二区三区在线视频观看58 | 欧日韩在线视频 | 欧美一级高潮 | 91网站免费在线观看 | 污视频在线看 | 男女羞羞视频在线观看免费 | 久久久aa | 中文字幕免费看 | 免费国产在线视频 | 国产91精品欧美 | 欧美午夜网 | 精品国产一区二区三区四 | 毛片免费观看完整版 | 成人三级免费电影 | 免费一级在线视频 | 国产精品99久久久久久宅女 | 午夜亚洲影院 | 精品国产一区二区三区天美传媒 | 蜜桃av鲁一鲁一鲁一鲁 | 成人午夜视频在线观看 | av电影网站在线 | av免费在线网 | 国内精品伊人久久久久网站 | 成人激情视频网 | 日韩黄网站 | 欧美激情 在线播放 | 斗破苍穹在线观看免费完整观看 | 久久九九热re6这里有精品 | 亚洲欧美日韩一区二区三区在线观看 | 毛片在哪里看 | 欧美日韩国产成人在线 |