首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

小弟我为什么得不到响应的XML文档,50请问

2012-02-07 
我为什么得不到响应的XML文档,50请教这个是HTM文件的代码!DOCTYPEHTMLPUBLIC-//W3C//DTDHTML4.0Transiti

我为什么得不到响应的XML文档,50请教
这个是HTM文件的代码
<!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN ">
<html>
<head>
<title> 9_1 </title>
<meta   name= "GENERATOR "   content= "Microsoft   Visual   Studio   .NET   7.1 ">
<meta   name= "ProgId "   content= "VisualStudio.HTML ">
<meta   name= "Originator "   content= "Microsoft   Visual   Studio   .NET   7.1 ">
<script   type= "text/javascript "   src= "js/net.js "> </script>
<script   type= "text/javascript ">                  
function   FillTerritory(oElem,oTarget)
{                                                      
var   strValue   =   oElem.options[                                                                    
oElem.selectedIndex].value;                                              
var   url   =   '9_1.aspx ';                                                              
var   strParams   =   'q= '   +   strValue   +                                                            
"&f= "   +   oTarget.form.name   +                                                                      
"&e= "   +   oTarget.name;                                                                                
var   loader1   =   new                                                                                            
net.ContentLoader(url,FillDropDown,null,                   //目标服务器端脚本的URL,回调函数,错误处理函数,使用的HTTP方法,以及发送的参数
"POST ",strParams);                                                      
}
function   FillDropDown()
{
var   xmlDoc   =   this.req.responseXML.documentElement;



var   xSel   =   xmlDoc.getElementsByTagName( 'selectElement ')[0];                                      
var   strFName   =   xSel.childNodes[0].firstChild.nodeValue;                                                  
var   strEName   =   xSel.childNodes[1].firstChild.nodeValue;                                                  
                       
var   objDDL   =   document.forms[strFName].elements[strEName];                                                                                  
objDDL.options.length   =   0;                                                                          
                       
var   xRows   =   xmlDoc.getElementsByTagName( 'entry ');                                                              
for(i=0;i <xRows.length;i++)
{                                                                      
var   theText   =   xRows[i].childNodes[0].firstChild.nodeValue;                                            
var   theValue   =   xRows[i].childNodes[1].firstChild.nodeValue;                                            
var   option   =   new   Option(theText,theValue);
objDDL.options.add(option,objDDL.options.length);                                            
}                                                                                                                            
}                      
</script>
</head>
<body>
<form   name= "Form1 "   ID= "Form1 ">


<select   name= "ddlRegion "   onchange= "FillTerritory(this,document.Form1.ddlTerritory) "   ID= "Select1 ">
<option   value= "-1 "> Pick   A   Region </option>
<option   value= "1 "> Eastern </option>
<option   value= "2 "> Western </option>
<option   value= "3 "> Northern </option>
<option   value= "4 "> Southern </option>
<option   value= "5 "> Eastern </option>
<option   value= "6 "> Western </option>
</select>
<select   name= "ddlTerritory "   ID= "Select2 ">
</select>
</form>
</body>
</html>
这个是后台C#代码
using   System;
using   System.Collections;
using   System.ComponentModel;
using   System.Data;
using   System.Drawing;
using   System.Web;
using   System.Web.SessionState;
using   System.Web.UI;
using   System.Web.UI.WebControls;
using   System.Web.UI.HtmlControls;
using   System.Data.OracleClient;
using   System.Xml;
namespace   Ajax_in_action
{
///   <summary>
///   _9_1   的摘要说明。
///   </summary>
public   class   _9_1   :   System.Web.UI.Page
{
//29-34
OracleConnection   conn   =   null;
private   string   connStr   =   System.Configuration.ConfigurationSettings.AppSettings[ "dsn "];
private   void   Page_Load(object   sender,   System.EventArgs   e)
{
//   在此处放置用户代码以初始化页面
Response.ContentType   =   "text/xml ";
string   resultxml   =   " <?xml   version= '1.0 '   ?> ";
int   qq   =   Convert.ToInt32(Request.Form[ "q "]);
string   ff   =   Request.Form[ "f "];
string   ee   =   Request.Form[ "e "];
if   (qq   >   0)
{
qq   +=   28;
resultxml   +=   " <selectChoice> ";
resultxml   +=   " <selectElement> ";
resultxml   +=   " <formName> "+ff+ " </formName> ";
resultxml   +=   " <formElem> "+ee+ " </formElem> ";
resultxml   +=   " </selectElement> ";
resultxml   +=   " <entry> ";
resultxml   +=   " <optionText> Select   A   Territory </optionText> ";
resultxml   +=   " <optionValue> -1 </optionValue> ";
resultxml   +=   " </entry> ";
DataSet   dset   =   new   DataSet();
DataTable   dt   =   new   DataTable();
conn   =   new   OracleConnection(connStr);
string   sqlQueryNew   =   "select   pdfid,title   from   GEO3DSHWEB.pub_pdf   where   typeid= ' "+qq+ " ' ";
OracleCommand   comm   =   new   OracleCommand(sqlQueryNew,conn);
conn.Open();
OracleDataAdapter   da   =   new   OracleDataAdapter(comm);
da.Fill(dset, "MaintainNews ");
conn.Close();


dt   =   dset.Tables[ "MaintainNews "];
int   num   =   dt.Rows.Count;
for(int   i=0;i <num;i++)
{
int   temp   =   i+1;
resultxml   +=   " <entry> ";
resultxml   +=   " <optionText> "+dt.Rows[i].ItemArray[1]+ " </optionText> ";
resultxml   +=   " <optionValue> "+temp+ " </optionValue> ";
resultxml   +=   " </entry> ";
}
resultxml   +=   " </selectChoice> ";
HttpContext.Current.Response.Write(resultxml.ToString());
//Response.Write(resultxml.ToString());
}
}

#region   Web   窗体设计器生成的代码
override   protected   void   OnInit(EventArgs   e)
{
//
//   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

///   <summary>
///   设计器支持所需的方法   -   不要使用代码编辑器修改
///   此方法的内容。
///   </summary>
private   void   InitializeComponent()
{        
this.Load   +=   new   System.EventHandler(this.Page_Load);
}
#endregion
}
}
这个是NET.JS中的代码
/*
url-loading   object   and   a   request   queue   built   on   top   of   it
*/

/*   namespacing   object   */
var   net=new   Object();
net.READY_STATE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;


/*---   content   loader   object   for   cross-browser   requests   ---*/
net.ContentLoader=function(url,onload,onerror,method,params,contentType){
    this.req=null;
    this.onload=onload;
    this.onerror=(onerror)   ?   onerror   :   this.defaultError;
    this.loadXMLDoc(url,method,params,contentType);
}

net.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType){
    if   (!method){
        method= "GET ";
    }
    if   (!contentType   &&   method== "POST "){
        contentType= 'application/x-www-form-urlencoded ';
    }
    if   (window.XMLHttpRequest){
        this.req=new   XMLHttpRequest();
    }   else   if   (window.ActiveXObject){
        this.req=new   ActiveXObject( "Microsoft.XMLHTTP ");
    }
    if   (this.req){
        try{
            var   loader=this;
            this.req.onreadystatechange=function(){
                net.ContentLoader.onReadyState.call(loader);
            }
            this.req.open(method,url,true);
            if   (contentType){
                this.req.setRequestHeader( 'Content-Type ',   contentType);
            }


            this.req.send(params);
        }catch   (err){
            this.onerror.call(this);
        }
    }
}


net.ContentLoader.onReadyState=function(){
    var   req=this.req;
    var   ready=req.readyState;
    if   (ready==net.READY_STATE_COMPLETE){
        var   httpStatus=req.status;
        if   (httpStatus==200   ||   httpStatus==0){
            this.onload.call(this);
        }else{
            this.onerror.call(this);
        }
    }
}

net.ContentLoader.prototype.defaultError=function(){
    alert( "error   fetching   data! "
        + "\n\nreadyState: "+this.req.readyState
        + "\nstatus:   "+this.req.status
        + "\nheaders:   "+this.req.getAllResponseHeaders());
}
我调试了,发现XML代码生成是正常的,但就是得不到响应的XML文档,也就是说,调试的时候HTM文件中的xmlDoc是null,我不知道为什么,请大家帮着解决一下,拜托了。

[解决办法]
ls...看到这句么...
net.ContentLoader.onReadyState.call(loader);
[解决办法]
oh , i see

加一句
Response.End();
在你的cs文件李
Response.Write(resultxml.ToString());
的下面

热点排行