我在使用xmlhttp从客户端向服务器端提交数据的时候,发现有几个问题。
客户端(js):
var Sendstr="req1=
1<root><string>"+theString+"</string></root>
";
var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
xmlHTTP.open("POST","test.asp",false);
xmlHTTP.setRequestHeader("Content-Type", "application/x-www-form- urlencoded");
xmlHTTP.send(Sendstr);
服务器端(asp):
set xmlDom=server.createobject("MSXML2.FreeThreadedDOMDocument")
xmlDom.async=false
xmlDom.loadXML(request("req1"))
问题是:
1.当theString含有"&","<",">"的时候,传递的字符串会出错,在服务器端接受
到的req1不正确,就算事先把"&","<",">"转为"&","<",">"也不起作用。
2.当theString含有空格时,xmlhttp会自动把空格去掉,原因不明。
请高手帮帮忙。
---------------------------------------------------------------
sorry,没看清楚,
var Sendstr="
1<root><string>"+theString+"</string></root>
";
.......
xmlHTTP.send("req1="+escape(Sendstr));
这样写
---------------------------------------------------------------
to zzysky(飞雪漫天)
但是要生成大型xml方式的时候用 dom方法就很慢了。
我用字符串累加就很快
var Arr=[];
var i=0;
Arr[i++]="
1<gorush>"
2Arr[i++]="阿舜"
3Arr[i++]="</gorush>
"
var xmlstr=Arr.join("")
---------------------------------------------------------------
to Go_Rush(阿舜)
你有试过吗?我没有感觉到慢呀!
另外刚才忘了说了解决非法字符可以把数据放到CDATA中去
var Arr=[];
var i=0;
Arr[i++]="
1<gorush><[CDATA["
2Arr[i++]="阿舜"
3Arr[i++]="]]></gorush>
"
var xmlstr=Arr.join("")
但是这种方法字符串最前面的空格还是会被去掉的。解决方法有二:
1、去找xml的说明文件,dom里面有一个属性,改变其值后,就会保留空格。
2、把数据作为属性,
1<gorush value=" 阿舜">绝对没有问题,不过这又要使用DOM的方法了,用字符串累加没法做。
2\---------------------------------------------------------------
3
4function XMLEncode(strXML)
5{
6var temp = "";
7temp=strXML.replace(/&/g,"&");
8temp=temp.replace(//g,">");
9temp=temp.replace(/"/g,""");
10temp=temp.replace(/'/g,"'");
11return temp;
12}
13
14function XMLDecode(strXML)
15{
16var temp = "";
17temp=strXML.replace(/&/g,"&");
18temp=temp.replace(/</g,"<");
19temp=temp.replace(/>/g,">");
20temp=temp.replace(/"/g,"\"");
21temp=temp.replace(/'/g,"'");
22return temp;
23}
24
25
26theString=XMLEncode(theString)
27var Sendstr="<root><string>"+theString+"</string></root>";
28var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
29xmlHTTP.open("POST","test.asp",false);
30xmlHTTP.setRequestHeader("Content-Type", "text/xml");
31xmlHTTP.send(Sendstr);
32服务器端(asp):
33set xmlDom=server.createobject("MSXML2.FreeThreadedDOMDocument")
34xmlDom.async=false
35xmlDom.load(request("req1"))</gorush>