ajax(動態網站靜態化)伴隨的goole 的推動,越來越多的站點開始使用了,在開大AJax(動態網站靜態化)程序的時候會遇到很多的問題,主要有以下幾個方面:
1.跨浏覽器問題
2.歷史後退狀態問題
3.跨域問題
跨浏覽器的問題因為現在有很多的開元的框架已經解決了,我們無需為此而煩惱。
歷史後退狀態問題我們可以使用一個數組來保存歷史紀錄,然後把這些數據村到歷史對象中去,中的也可以解決,並且還有很多的開元框架給與支持,這樣問題就不是很大。
跨域的問題就不是很好的解決,但是還是有辦法的,一下給出一些基本的解決方案供大家選擇:
1.使用代理,你可以使用web端的程序編寫代理程序,把所有的AJax(動態網站靜態化)請求的數據進行轉發,web程序可以使PHP(做為現在的主流開發語言),JSP(SUN企業級應用的首選),ASP等所有的編程語言。相信大家對這種方式一定很熟悉,這裡就不詳細的介紹了。
2.使用iframe的方式來定勢的刷新葉面,這種方式只是取得數據來顯示,並不能真正的和求得的數據進行交互,轉化成本頁面的動態數據,不是很可取,應用也不是很多,我也忽略不去討論了。
3.使用apache(Unix平台最流行的WEB服務器平台)的代理功能,主要就是apache(Unix平台最流行的WEB服務器平台)的方向代理,或者是url從定向,你也可以把其他的站點直接的掛在自己的網站上,這樣的方式可能會友邦權的問題,多的九部介紹了,有興趣的本有可以自己實踐以下。
4.使用《script》標簽的方式,這樣的話就可以保正使用真正的AJax(動態網站靜態化)來跨域,並且可以使用返回來的數據,發誓很簡單,在我們的後台程序處理後的到的結果都直接的用Javascript 的方式返回,在我們的Html中直接的使用返回數據的變量就可以了一個簡單的例子
我們使用的Html葉面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD Html 4.0 Transitional//EN">
<Html>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="KeyWords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<SCRIPT LANGUAGE="JavaScript" src="" id="get">
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
function get(url)
{
var obj = document.getElementById("get");
obj.src = url;
(obj.readStatus == 200)
{
alert(XML(標准化越來越近了));
}
}
function text()
{
get (get.PHP(做為現在的主流開發語言));
}
//-->
</SCRIPT>
<BODY>
<INPUT TYPE="button" value="CLICK ME" >
</BODY>
/Html>
後台程序
get.PHP(做為現在的主流開發語言)
eche 'var XML(標准化越來越近了) ="asdf";';
當你點擊按鈕的時候就會去服務器那去你需要的JS,但加在完成後就可以自己的使用變量XML(標准化越來越近了)了,運行代碼後你會得到一個對話框顯示asdf;