利用jquery解析返回的HTML數據


在做web服務的時候,如果你能同時控制服務器和客戶端,返回的數據你可以自己定義,這是最理想的模式,但有時,你控制不了或只能控制服務器的一部分數據的時候,問題就來了:你不能按照你想要的格式如json或XML返回,每個網頁都已經被服務器定義好了返回的html,你只能在其中插入數據。
       我在做一個嵌入式設備的時候就碰到了這樣的問題,我必須使用內嵌的web服務器,它里面代碼比較原始,全部由CGI直接返回html的數據,我想把jquery放到里面以提高前端的顯示效率,但我只能把我的數據添加到web服務器,當然也可以自己去改web服務器,但代價太高,我只想從返回的html中抽出我需要處理的數據,略過其他數據,而且不能影響到返回的數據在其他位置的顯示,所以偷懶使用了下面的辦法,我知道也許有更好的辦法,但google 沒找到合適的。如有更好的辦法,請回復下!
       1)在服務器端把你的返回數據用ID做標記,例如,你本來返回的是一個ip地址,把它改寫成這樣:
              webresult("<div id=myip>ip</div>")
             (原來的做法:webresult(“ip”))
       2) 寫一個函數取得自己的數據

  下面是一個例子:

/* get  server status function 
* author: Seabird
*/ 
function getConnectStatus() {
        $.ajax({
                type:“GET”
                url:“/XXXXX /getConnectStatus",
                dataType:"html",
                success:function(data) {
                        var $msg1 = $(data);
                        var sta = $msg1.filter("#status").html();
                                if (sta  !== "NO") {
                                $("#connect").show();
                        var staArry = "<tr><td>" + $msg1.filter("#userid").html() + "<
/td>"
                                        + "<td>" + $msg1.filter("#role").html() + "<
/td>"
                                        + "<td>" + $msg1.filter("#from").html() + "
</td>"
                                        + "<td>" + $msg1.filter("#connect").html() +
 "</td></tr>";
                         $("#result").append(staArry);

                                } else {$("#connect").hide(); }
                        }
});

}

3)注意紅色的代碼,那個#status是服務器返回的,不是客戶端的,下面是服務器返回的格式:

.....
if (connected) {
webresult("<div id=status>connected</div>");
webresult("<div id=userid>123456</div>");
webresult("<div id=role>Client1</div>");
webresult("<div id=from>1.1.1.1</div>");
webresult("<div id=connect>server1</div>");
} else { webresult("<div id=status>NO</div>");

4) 客戶端調用:
在需要顯示的地方加入:

<div id=connect>
       <div id=result></div>
</div>

這樣,你只要在點擊或鼠標掃過的地方加入這個事件就可以了

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM