ajax新手问题:POST方式传参,服务器取不到值请高手帮忙看下代码

greatking004 2009-11-26 01:48:24
RT
脚本文件
var xmlhttp;
function verify(){
var userName=document.getElementById("userName").value;

if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();


if(xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType("text/xml")
}

}else if(window.ActiveXObject){

var activexName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0;i<activexName.length;i++){
try{

xmlhttp=new ActiveXObject(activexName[i]);
break;
}catch(e){

}
}
}

if(!xmlhttp){
alert("XHR创建失败!");
return;
}else{
alert(xmlhttp.readyState);
}

xmlhttp.onreadystatechange=callback;



var arg="name=abc";
xmlhttp.open("POST","AJAXsServer",true);
xmlhttp.setRequestHeader("Content-Length",arg.length);

xmlhttp.setRequestHeader("CONTENT-TYPE","applicaton/x-www-form-urlencoded");
xmlhttp.send(arg);



}
function callback(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var responseText=xmlhttp.responseText;
var divNode=document.getElementById("result");
divNode.innerHTML=responseText;
}

}
}
后台服务器接受的文件AJAXsServer.java
public class AJAXsServer extends HttpServlet{
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
try{
httpServletResponse.setContentType("text/html;charset=utf-8");
PrintWriter out=httpServletResponse.getWriter();
String old =httpServletRequest.getParameter("name");
System.out.println(httpServletRequest.getParameterMap());

out.println(old);



if(old==null||old.length()==0){
out.println("用户名不能为空");
}else{
if(old.equals("wangxingkui")){

out.println("username is already used "+" "+old);
}else{
out.println("you can use this name "+" "+old);
}
}
}catch (Exception e){
e.printStackTrace();;
}
}

protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
doGet(httpServletRequest, httpServletResponse);
}
}

web.xml我就不贴了,没有问题的,页面是一个text,一个button,按下button会把text的内容传到脚本文件中,然后判断这个内容是否等于wangxingkui。熟悉这个代码的应该发现这是传智视频里面的例子,我按着视频做,结果做到post方式就不行,也不报错。问题是我的AJAXsServer中取不到参数,System.out.println(httpServletRequest.getParameterMap());出来全是空的。不知道哪位仁兄可以解答一下
...全文
597 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
greatking004 2009-12-02
  • 打赏
  • 举报
回复
问题终于解决了,拼写错误害死人啊
感谢大家的支持!
pleili 2009-12-01
  • 打赏
  • 举报
回复
怎么没反应了啊?问题解决了没啊?
greatking004 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 sggsg 的回复:]
JScript codevar url="<%=request.getContextPath()%>/AjaxServlet?type="+type
xmlHttp.onreadystatechange=callback;
xmlHttp.open("post",url,false);
xmlHttp.send(null);
我的都是这样写的,你试下
[/Quote]
post这样传不对吧,不是应该把参数放在send里面么?
greatking004 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 licip 的回复:]
你这个头信息设置不对呀。
xmlhttp.setRequestHeader("CONTENT-TYPE","applicaton/x-www-form-urlencoded");
应该为:

xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded"); 你少写了个i呀。

[/Quote]
应该是正解,等我晚上回家试试看哈
wei_june 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 licip 的回复:]
你这个头信息设置不对呀。
xmlhttp.setRequestHeader("CONTENT-TYPE","applicaton/x-www-form-urlencoded");
应该为:

xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded"); 你少写了个i呀。

[/Quote]
哦了吧
chendong_j 2009-11-27
  • 打赏
  • 举报
回复
var userName在你的JS里貌似根本就没被发出去
greatking004 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 chendong_j 的回复:]
莫非没有得到表单数据?LZ可以做个断点看看嘛
[/Quote]
js里面的userName接收数据是成功的
就是servlet没有得到数据,我用System.out.println(httpServletRequest.getParameterMap());打出来是空的
所以我就找不出原因啦
chendong_j 2009-11-27
  • 打赏
  • 举报
回复
莫非没有得到表单数据?LZ可以做个断点看看嘛
greatking004 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yishiwucheng 的回复:]
xmlhttp.open("POST","AJAXsServer",true);
这个里面的URL是不是有问题,JAVA的不太清楚,你可以试下
[/Quote]
这个URL应该没有问题吧,我用GET方式的话是可以的,GET方式如下
xmlhttp.open("GET","AJAXsServer?name="+userName,true);
yishiwucheng 2009-11-27
  • 打赏
  • 举报
回复
xmlhttp.open("POST","AJAXsServer",true);
这个里面的URL是不是有问题,JAVA的不太清楚,你可以试下
licip 2009-11-27
  • 打赏
  • 举报
回复
你这个头信息设置不对呀。
xmlhttp.setRequestHeader("CONTENT-TYPE","applicaton/x-www-form-urlencoded");
应该为:

xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded"); 你少写了个i呀。
钱不是问题 2009-11-27
  • 打赏
  • 举报
回复

var url="<%=request.getContextPath()%>/AjaxServlet?type="+type
xmlHttp.onreadystatechange=callback;
xmlHttp.open("post",url,false);
xmlHttp.send(null);

我的都是这样写的,你试下
greatking004 2009-11-27
  • 打赏
  • 举报
回复
up
greatking004 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 chendong_j 的回复:]
userName除了被赋值以外,再没出现在JS里过啊
[/Quote]
解释看下12L吧,我不能编辑,泪奔。。
greatking004 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 yugong2009 的回复:]
表单元素是不是放在 <form>中
[/Quote]
ajax不是传表单的
chendong_j 2009-11-27
  • 打赏
  • 举报
回复
userName除了被赋值以外,再没出现在JS里过啊
yugong2009 2009-11-27
  • 打赏
  • 举报
回复
表单元素是不是放在<form>中
natici 2009-11-27
  • 打赏
  • 举报
回复
虽然没全看懂代码的每一行,没弄到啥情况,不过还是很想学习,帮顶吧。。。
greatking004 2009-11-27
  • 打赏
  • 举报
回复
我没法编辑,晕
就是send改成
send("name="+userName);
greatking004 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 chendong_j 的回复:]
var userName在你的JS里貌似根本就没被发出去
[/Quote]
我之前是用var userName接收HTML页面传过来的值
userName可以取到值,但是send以后servlet取不到值
我就把send的参数改成var arg="name=abc"; 看这个常量能不能传过去,结果还是不行
我还是再把代码改回来吧,你再帮忙看下~
加载更多回复(6)

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧