ajax實(shí)例教程:如何解決ajax跨域問(wèn)題
來(lái)源:程序員人生 發(fā)布時(shí)間:2013-12-02 15:04:47 閱讀次數(shù):2722次
要解決ajax跨域問(wèn)題,網(wǎng)上給出的方法有二:
1是構(gòu)建服務(wù)器端的代理。簡(jiǎn)而言之,就是ajax中調(diào)用的實(shí)質(zhì)還是本機(jī)的url,而服務(wù)器端替js去取回遠(yuǎn)端地址。
2.利用script標(biāo)記,生成一個(gè)標(biāo)簽。在js加載完成后,再執(zhí)行后續(xù)操作。
就是將原來(lái)新建xmlHTTPrequest對(duì)象的操作改成了新建script標(biāo)簽的操作.
這里給出一個(gè)例子:
#ajah.js
var Ajah=function(url,varname,handleSuccess,handleFailure){
/**
* handleSuccess,handleFailure must be functions
* */
script = document.createElement("script");
script.src=url;
var handler = function(str)
{
handleSuccess(str);
}
script.onload = function()
{
var json=eval(varname);
handler(json);
}
if(window.ie)
{
script.onreadystatechange = function()
{
if(script.readyState=='complete'||script.readyState== 'loaded')
{
var json=eval(varname);
if(typeof json != 'undefined')
{
handler(json);
}
}
}
}
document.body.appendChild(script);
}
而在網(wǎng)頁(yè)中應(yīng)這樣調(diào)用:
#demo.html
<pre>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 1 September 2005), see www.w3.org">
<title></title>
<script src="mootools.js"></script>
<script src="ajah.js"></script>
</head>
<body>
<script>
var ajah=new Ajah("data.js","json198",function(str){
console.debug("returned:");
console.debug(str);
},
function(str){});
</script>
</body>
</html>
</pre>
被調(diào)用的數(shù)據(jù)文件如下
#data.js
var json198="hello,this is json198";
funciton Ajah(url,varname,handleSuccess,handleFailure){…}
Ajah這個(gè)構(gòu)造函數(shù)調(diào)用四個(gè)參數(shù):
url:遠(yuǎn)端地址
varname:遠(yuǎn)端返回?cái)?shù)據(jù)的變量名
handleSuccess:加載完畢后加載的函數(shù)
handleFailure:暫時(shí)沒(méi)用上
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)