通过xmlhttp传字符串的问题,高手都过来看,分不够再给

我在使用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>&lt;[CDATA["   
2Arr[i++]="阿舜"   
3Arr[i++]="]]&gt;</gorush>

"
var xmlstr=Arr.join("")

但是这种方法字符串最前面的空格还是会被去掉的。解决方法有二:
1、去找xml的说明文件,dom里面有一个属性,改变其值后,就会保留空格。
2、把数据作为属性,

 1<gorush value=" 阿舜">绝对没有问题,不过这又要使用DOM的方法了,用字符串累加没法做。   
 2\---------------------------------------------------------------   
 3  
 4function XMLEncode(strXML)   
 5{   
 6var temp = "";   
 7temp=strXML.replace(/&amp;/g,"&amp;");   
 8temp=temp.replace(//g,"&gt;");   
 9temp=temp.replace(/"/g,""");   
10temp=temp.replace(/'/g,"'");   
11return temp;   
12}   
13  
14function XMLDecode(strXML)   
15{   
16var temp = "";   
17temp=strXML.replace(/&amp;/g,"&amp;");   
18temp=temp.replace(/&lt;/g,"&lt;");   
19temp=temp.replace(/&gt;/g,"&gt;");   
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>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus