如果在页面中使用xmlhttp无刷新收发数据的话,常常会用到get方式。一般URL会连着写成一串,这就导致一个问题的产生了,如果这个URL的字符太多的话,就会错误,比如下面的代码:
var url ="Excel.ashx?MyValue1="+escape(Value1)+"&MyValue2="+escape(Value2)+"&MyValue3="+escape(Value3);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = UpdatePage;
xmlHttp.send(null);
请大家仔细看清楚,上面共有三个参数,试问,万一哪个参数的值很长的话,比如MyValue1参数的值其内容万一有几万个字,势必会造成URL的字符数量太长而导致错误的问题。
如何来解决这个问题呢?使用post方式传送数据即可。改为如下:
var url ="Excel.ashx";
var PostData="MyValue1="+escape(Value1)+"&MyValue2="+escape(Value2)+"&MyValue3="+escape(Value3);
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = UpdatePage;
xmlHttp.send(PostData);
看到了吧,就改三行而已,现在,问题就得到解决了,不管参数的数据内容有多少,字符有多长,都能正常的传输。
当然了,换了POST发送数据之后,相应的,在服务器端的页面,接收参数方式,也得改了,改为如下,比如:
string GetPar1 = context.Request.Params["MyValue1"].ToString();
原来是下面这个哦:
string GetPar1 = context.Request.QueryString["MyValue1"].ToString();