关于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的错误(如果参数中没有汉字也能正常运行),哪位大哥给指点迷津?这个属性的设置对发送有什么影响?先谢过了! ^_^
为了图省事,拼成xml格式的字符串send,后来改为用XMLDocument xmldoc 进行封装,xmlHttp.send(xmldoc)发送就没什么问题了。
在用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;
}
}
{
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)发送就没什么问题了。