跨網域存取Excel資料庫方法3:採用ajax非同步讀取法
(關鍵在$.ajax({指定jsonpCallback: "callBackdata"函數) ,並以ajax及時顯示3層div-ul選單
(必須在IIS以http://localhost/...的方式來執行網頁)
(本題存取跨網域伺服器Excel,ASP.NET網頁http://acupun.site/lecture/jquery_phoneGap/21-aspxCallBack-excel-croossDoamin08-div-ul.aspx?txtkeyin= city)
(只要是(A)讀json資料, (B)方法3, (B)方法4使用ajax經由aspx讀取資料的,都必須用chrome瀏覽器)


查詢縣市:

         


        1.注意:

        伺服端可以傳回JSON字串,可以使用eval()將JSON字串計值(evaluate)為JavaScript物件。例如:

        var obj = eval(json);

        然而eval()也會運算傳入的JavaScript程式碼,因此並不建議直接用eval(),如果只是要計值JSON為JavaScript物件,可以使用JSON.parse()。例如:
        var obj = JSON.parse(json);

        如果是Firefox 3.1、Internet Explorer 8以外沒有內建JSON支援的瀏覽器,可以在 http://www.json.org/ 下載json2.js(還有其它檔案,你可以看看上頭的README說明),將之包括在網頁中,即可獲得上述的相關JSON方法:
        <script type="text/javascript" src="json2.js">

        如果遇到瀏覽器已內建JSON支援,json2.js什麼都不作。以下是個使用JSON的示範,會提示可搜尋的選項(沒有真的有搜尋功能就是了),如果有符合的選項,則會以JSON的格式傳回字串陣列,例如'["caterpillar", "ceo"]'這樣的格式(

        (1).讀取server端xml資料:

         if (window.XMLHttpRequest)
         {// code for IE7+, Firefox, Chrome, Opera, Safari
         xmlhttp=new XMLHttpRequest();
         }
         else
         {// code for IE6, IE5
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.open("GET","xml/person.xml",false);
         xmlhttp.send();
         xmlDoc=xmlhttp.responseXML; 

        (2).讀取的XML(xmlDoc)如何抓到第2位學生電話tel

        第1位學生的姓名:xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue

           第1位學生的電話:xmlDoc.getElementsByTagName("tel")[0].childNodes[0].nodeValue
           第2位學生的電話:xmlDoc.getElementsByTagName("tel")[1].childNodes[0].nodeValue

        (3).讀取的XML(xmlDoc)如何抓到所有學生student的結構資料

        man=xmlDoc.getElementsByTagName("student");
        *第3位學生的電話:man[2].getElementsByTagName("tel")[0].childNodes[0].nodeValue
        *印出所有學生student的姓名:

        for (i=0;i<man.length;i++)
        {
        document.write(man[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
        }

        (3).表格的標籤語法:<tr列,<td欄

        <table border=1>
        <tr>
        <td>學號</td><td>姓名</td><td>電話</td><td>電子郵件</td>
        </tr>

        5.xml字串與xmlDoc節點變數彼此轉換的公式

        //將xml字串轉成xmlDoc節點變數:
        xmlDoc =parser.parseFromString(txt,"text/xml");

        //將字串轉成xmlDoc節點變數
        if (window.DOMParser) {
        parser=new DOMParser();
        xmlDoc=parser.parseFromString(txt,"text/xml");
        } else // Internet Explorer {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async=false;
        xmlDoc.loadXML(txt);
        }

        //將xml物件轉成xml字串:
        xmlString
        =(new XMLSerializer()).serializeToString(xmlDoc)

        //將xml物件轉成string文字
        if (window.ActiveXObject) { // for IE 瀏覽器
        txt01.value = xmlDoc.xml;
        } else { //chrome, firefox,Opera各種瀏覽器
        txt01.value = (new XMLSerializer()).serializeToString(xmlDoc);
        }

         

        (5).person.xml結構

        var stu = new Array(); //一維陣列 物件
        <?xml version="1.0" standalone="yes"?>
        <person>
        <student>
        <id_no>9096036</id_no>
        <name>蔡文龍</name>
        <tel>04-32345671</tel>
        <mail>lung67@giga.net.tw</mail>
        </student>
        <student>
        <id_no>9096001</id_no>
        <name>許百宏</name>
        <tel>04-12345671</tel>
        <mail>em@ms37.hient.net</mail>
        </student>
        <student>
        <id_no>9096002</id_no>
        <name>林宜美</name>
        <tel>04-78955671</tel>
        <mail>em@ms37.yam.net</mail>
        </student>
        <student>
        <id_no>9096003</id_no>
        <name>賴玲英</name>
        <tel>049-6345671</tel>
        <mail>pc@ms56.hient.net</mail>
        </student>
        <student>
        <id_no>9096004</id_no>
        <name>丁勝勇</name>
        <tel>02-12344471</tel>
        <mail>em@ms37.hient.seed.tw</mail>
        </student>
        <student>
        <id_no>9096005</id_no>
        <name>劉曉珍</name>
        <tel>049-1345671</tel>
        <mail>yy@ms45.hient.net</mail>
        </student>
        <student>
        <id_no>9096006</id_no>
        <name>李逢源</name>
        <tel>06-11235671</tel>
        <mail>et@ms37.yam.net</mail>
        </student>
        <student>
        <id_no>9096007</id_no>
        <name>卓水信</name>
        <tel>02-17896671</tel>
        <mail>em@ms37.pchome.net</mail>
        </student>
        <student>
        <id_no>9096008</id_no>
        <name>謝沂臻</name>
        <tel>049-1234571</tel>
        <mail>em@ms56.pchome.net</mail>
        </student>
        <student>
        <id_no>9096009</id_no>
        <name>徐志宏</name>
        <tel>04-15465671</tel>
        <mail>pp@ms69.hient.net</mail>
        </student>
        </person>