AJAX的使用方面:使用ajax的跨域访问的问题,经过任务提醒项目后,总结出以下五种方式:
i. 使用Jquery来加载javascript的方式:如,
jQuery.ajax({
type: "GET",
timeout:this.ajaxRequestTimeout,
url: this.userTaskIsReadUrl,
dataType: "script",
cache:false,
async:true,
global:false,
success:function(){}
}
});
注:此方法需要远程url返回的是js代码,我理解的是,她它原理是将远程的js代码加载到本页来执行,而非直接访问远程数据,所以不存在跨域问题,不过至于参数type: "GET",这个用get和用post会有什么不同,分别能起到什么作用,还不是很理解。
ii. 采用iframe方式:如,
假如我需要在activePage.html页面使用跨域访问,那先新建一个静态页ajaxproxy.html,在此页面里写ajax方法,然后再在activePage.html页中将ajaxproxy.html页面通过iframe方式引进来 iframe的ID为iframeId,然后在页面使用代码 var proxy=document.getElementById(‘iframeId’).contentWindow;使用变量proxy就可以操作ajaxproxy.html里面的ajax函数了,实现了跨域,但貌似ajaxproxy.html文件必须和要跨的域在同一域下。
iii. 采用java的方式,在本地新建一个jsp文件,在jsp文件里面采用readURl的方式去访问远程url,然后在需要跨域的页面里采用ajax调用本地的这个jsp即可实现跨域。
iv. 貌似添加js代码:document.domain = "duowan.com"; 可以实现一级域名下面的子域名间跨域。
v. 还有一种方法和第一种方法一样,只不过动态加载js是要自己写,而不是采用jquery,拷贝老大的代码如下:
function dynamicLoadScript(scriptUrl,onloadFunction){
var scriptBlock = document.createElement("script");
scriptBlock.src = scriptUrl; scriptBlock.type = "text/javascript";
scriptBlock.language = "javascript";
if(onloadFunction && isIEBrowser()){
scriptBlock.onreadystatechange = function(){
if(scriptBlock.readyState=='loaded') onloadFunction();
};
}else if(onloadFunction){
scriptBlock.onload = function(){onloadFunction();};}
document.getElementsByTagName("head")[0].appendChild(scriptBlock);
return scriptBlock;}