通过 Microsoft.XMLDOM 实现简单的 Ajax(更新)
今天在在做公司的搜索关键词功能,因为哪个页面要做成静态 HTML 的,所以想了几个方法,昨天晚上快下班的时候上头才说要改,就急急忙忙地改了一下,实现的方法是用
来读这些动态的数据,但是因为页面上搜索有条件,切换条件是直接用 js 来处理的,所以,在切换的时候,热门关键词都要跟在改变。但问题随之而来! 这个区域我没有办法在页面不刷新的情况下重新调用它。所以一直没有解决。
今天试着被调用的态页面反回 XML 结构的,再用 Js 去读这个结果,再输入,果然成功了。呵呵,也就是一个简单的 Ajax 应用。
动态页面生成 XML 的代码:
 protected void Page_Load(object sender, EventArgs e)
protected void Page_Load(object sender, EventArgs e)
 
     {
{ Response.ContentType = ”text/xml”;
        Response.ContentType = ”text/xml”;
 }
    }

 生成 XML#region 生成 XML
    生成 XML#region 生成 XML private void CreateXML()
    private void CreateXML()
 
     {
{ string strContent = ””;
        string strContent = ””;
 for (int i = 0; i < 100; i++)
        for (int i = 0; i < 100; i++)
 
         {
{ strContent += ”” + ”关键词” + i.ToString() + ”]]>” + i.ToString() + ””;
            strContent += ”” + ”关键词” + i.ToString() + ”]]>” + i.ToString() + ””; }
        }
 WriteXML(strContent);
        WriteXML(strContent); }
    } #endregion
    #endregion

 输出 XML#region 输出 XML
    输出 XML#region 输出 XML private void WriteXML(string strContent)
    private void WriteXML(string strContent)
 
     {
{ Response.Write(”” + strContent + ””);
        Response.Write(”” + strContent + ””); }
    } #endregion
    #endregion
返回的 XML 代码结构:
<keywords>
<item>
<word>关键词 1word>
<type>1type>
item>
<item>
<word>关键词 2word>
<type>2type>
item>
<item>
<word>关键词 2word>
<type>2type>
item>
<item>
<word>关键词 4word>
<type>4type>
item>
<item>
<word>关键词 5word>
<type>5type>
item>
keywords>
<item>
<word>关键词 1word>
<type>1type>
item>
<item>
<word>关键词 2word>
<type>2type>
item>
<item>
<word>关键词 2word>
<type>2type>
item>
<item>
<word>关键词 4word>
<type>4type>
item>
<item>
<word>关键词 5word>
<type>5type>
item>
keywords>
Javascript 读取的方法,FileName 参数是被调用的动态页面,panelID 是最终要显示的区域 ID 名称
重点:xmlDoc.async=”false”; 异步方式读取
 function ReadKeywords(filename,panelID)
  function ReadKeywords(filename,panelID)
 
     {
{ var panel  = $(panelID);
        var panel  = $(panelID); //取得取后输出的区域,来自参数
        //取得取后输出的区域,来自参数 var strContent = ””;
        var strContent = ””;     panel.innerHTML = ”载入中
        panel.innerHTML = ”载入中 ”;
”; var xmlDoc = new ActiveXObject(”Microsoft.XMLDOM”);
        var xmlDoc = new ActiveXObject(”Microsoft.XMLDOM”);        xmlDoc.async=”false”;
        xmlDoc.async=”false”; //去读用动态页面,并读到结果的 XML
        //去读用动态页面,并读到结果的 XML xmlDoc.load(filename);
        xmlDoc.load(filename);  //选定节点
        //选定节点 var item = xmlDoc.selectNodes(”keywords/item”);
        var item = xmlDoc.selectNodes(”keywords/item”);  //没内容时的处理
        //没内容时的处理   if(item == null)
        if(item == null)          return ;
            return ;                 if(item.length == 0)
        if(item.length == 0)    return ;
            return ;     //通过循环组合内容
        //通过循环组合内容 for(var i=0;i<item.length;i++)
        for(var i=0;i<item.length;i++)
 
         {
{ strContent += ””
            strContent += ”” strContent += ””+ item[i].selectSingleNode(”word”).text+”&type=”+item[i].selectSingleNode(”type”).text+”’>”+ item[i].selectSingleNode(”word”).text+””;
            strContent += ””+ item[i].selectSingleNode(”word”).text+”&type=”+item[i].selectSingleNode(”type”).text+”’>”+ item[i].selectSingleNode(”word”).text+””; strContent += ” ”;
            strContent += ” ”; }
        }     //显示到区域上面
        //显示到区域上面 panel.innerHTML = strContent;
        panel.innerHTML = strContent; }
    }
HTML 调用的代码:
//说明:
//现在以上面的 动态页面命名为 ”getkeyword.aspx“ ,Javascript 存成 Script.js
//HTML 调用时的例子
<script type=”text/javascript” src=”script.js”>script>
<div id=”panelKeyword”>
这个地方会显示最终的关键词
div>
<script type=”text/javascript”>
ReadKeywords(”getkeyword.aspx”,”panelKeyword”);
script>
//现在以上面的 动态页面命名为 ”getkeyword.aspx“ ,Javascript 存成 Script.js
//HTML 调用时的例子
<script type=”text/javascript” src=”script.js”>script>
<div id=”panelKeyword”>
这个地方会显示最终的关键词
div>
<script type=”text/javascript”>
ReadKeywords(”getkeyword.aspx”,”panelKeyword”);
script>
提醒一下:HTML 与 XML 里面的代码可能会有错别字的地方,因为是用记事本打出来的,如果真的有错的地方,请大家多多包涵..本文主要是讲的方法,而不是给代码,代码拿来也没什么用,网上好的 Ajax 框架多着呢,呵呵
应用效果:http://www.uctoy.com