昨天晚上碰到了一个严重的问题,发现Ajax post提交的数据,在后台Servlet接收的时候为null,空值。找了很长时间的原因,都没有找到,本来我的调用是成功的,但是今天无论如何都没有成功,真是令我很急。找了半天的原因,都没有收获,后来想想可能是 我删除了一条语句的问题:这条语句,我以前也不知道是作什么用的,SetRequestHeader("Context-Type","application/x-www-form-urlencoded;") 。后来根据这条信息到网上找资料,最后还真是被我找到了。
文章如下:
笔者:Showwin日期:2006.10.13Get方式:作用:可传送简单数据大小:url最大长度是2083 bytes,可以用于GET传递数据的长度是2048 bytes包含体:数据追加到url中发送,也就是http的header传送Post方式:作用:可传送简单复杂数据大小:web.config里限制包含体:数据在http请求的实体内容里传送
Ajax用Post模式传送数据.需注意1.设置header的Context-Type为application/x-www-form-urlencode确保服务器知道实体中有参数变量.通常使用XmlHttpRequest对象的SetRequestHeader("Context-Type","application/x-www-form-urlencoded;")2.参数是名/值一一对应的键值对,每对值用&号隔开.如 name=abc&sex=man&age=18.3.参数在Send(参数)方法中发送4.服务器端请求参数区分Get与Post.例如asp.net中以Request.Form["name"]对实体中的参数请求.这时url参数请求Request.QueryString["name"]将引发异常
< javascript language = " javascript>function StateEvent(){if(XmlHttpObject.readyState == 4){ if(XmlHttpObject.status == 200) { //code }}}function CreateXmlHttp(){ if(window.ActiveXObject) { return new ActiveXObject( " Microsoft.XMLHTTP " ); } else if (window.XMLHttpRequest) { return new XmlHttpRequest(); }}function Start(){ var ParamString = "name=abc&sex=man&age=18 "; var XmlHttpObject = CreateXmlHttp(); XmlHttpObject.onreadystatechange = StateEvent; XmlHttpObject.open( " post " ,"test .aspx " ,true); XmlHttpObject.setRequestHeader( " Content - Type " , " application / x - www - form - urlencoded; " ); //设置服务器响应请求体参数 XmlHttpObject.send(ParamString);} </script>