关于xmlhttp的问题

xmlhttp经常使用,但是对它并不了解,下面是前天遇到的一个问题的代码(我传递的参数中含有中文),问题是Content-Type设为application/x-www-form-urlencoded后,xmlhttp返回500的错误,注释掉后就正常了,但还是没搞清楚原因,在网上查了下是这样说的:
在用XmlHttp向服务端提交数据时,对requestHeader的Content-Type通常有两种设置方式,一种是设为:application/x-www-form-urlencoded,另一种方式是不设置,缺省为不使用 application/x-www-form-urlencoded的方式,使用application/x-www-form-urlencoded方式时传递的信息是以name=value的方式传递到服务端的,在服务端可以用request.getParameter()取到值,不使用application/x-www-form-urlencoded方式时,在服务端可以用request.getInputStream()取得数据。无论以哪种方式,客户端的数据都是以UTF-8的格式编码后传递给服务器的。
但搞不明白为什么会返回500的错误(如果参数中没有汉字也能正常运行),哪位大哥给指点迷津?这个属性的设置对发送有什么影响?先谢过了! ^_^

            function ChangeRight(typeid)
            
{
                
var vDeptID = GetDeptID();
                
if(vDeptID == "")
                    
return;
                
if(GetRightInfo(typeid,vDeptID) == "wrong")
                
{
                    alert(
"该部门可能没有建立日程分类,请与系统管理员联系!");
                    
return;
                }
    
                
var LuRuRenBiaoShi="";
                
//var strURL = "/CNNC/LingDaoRiCheng/PlanAdmin/cmdPlan.aspx";
                //var strXml = "";
                //strXml += "<result>";
                //strXml += "<action>getUserList</action>";
                ////strXml += "<typeid>" + typeid + "</typeid>";
                //strXml += "<deptid>" + vDeptID + "</deptid>";
                //strXml += "</result>";
                //LuRuRenBiaoShi = Execute(strURL, "POST", strXml);//取得已授权的用户列表
                //alert(LuRuRenBiaoShi);
                var arrPersonInfo;
                LuRuRenBiaoShi 
= openDialog("/SysModule/Mail/addPerson.aspx?oValue="+escape(LuRuRenBiaoShi),600,600,"" ,"");
                
var person,personName ;
                arrPersonInfo 
= LuRuRenBiaoShi.split('$');
                person 
= "";
                personName 
="";
                
for (var i=0;i<arrPersonInfo.length-1;i++)
                
{
                    
var strTemp=(arrPersonInfo[i].split("&"))[0];
                    person 
+= strTemp + ",";
                    personName 
+= (arrPersonInfo[i].split("&"))[1+ ",";
                }

                strXml 
= "";
                strXml 
+= "<result>";
                strXml 
+= "<action>changeright</action>";
                strXml 
+= "<typeid>" + typeid + "</typeid>";
                strXml 
+= "<deptid>" + vDeptID + "</deptid>";
                strXml 
+= "<userlist>" + person + "</userlist>";
                strXml 
+= "<userName>" + personName + "</userName>";
                strXml 
+= "</result>";
                
//alert(escape(strXml));
                var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                xmlhttp.Open(
"POST", strURL, false);
                
//xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                //加上此行返回500的错误,注释掉后就正常了
                xmlhttp.Send(strXml);
                
if (xmlhttp.status == 200)
                
{
                    alert(
"操作成功!");
                    window.location.href 
= window.location.href;
                }

                
else
                
{
                    alert(xmlhttp.status);
                    strResult 
= -1;
                }

            }

为了图省事,拼成xml格式的字符串send,后来改为用XMLDocument  xmldoc 进行封装,xmlHttp.send(xmldoc)发送就没什么问题了。

posted @ 2007-06-10 22:24  AK47+  阅读(516)  评论(0编辑  收藏  举报