我看了半天也没有发现哪里错了,哪位有空麻烦帮忙看一下,感激不尽。
注:ajax要提交post的页面chpwd_ajax.php我单独测试过,是OK的。
<head>
<script type="text/javascript">
function chpwd(){
  var usr=document.getElementById('username'); //在span标签中
  var old=document.getElementById('oldpwd');
  var n1 =document.getElementById('newp1');
  var n2 =document.getElementById('newp2');
  if(old.value.length == 0){
alert("请输入原密码");
old.focus();
return false;
  }
  if(n1.value <> n2.value){
alert("两次输入的密码不一致");
n2.focus();
return false;
  }
  var url="chpwd_ajax.php";
  var data="user="+usr.innerText+"&old="+old.value+"&new="+n1.value;
  alert(data);
  var xhr;
  if (window.XMLHttpRequest){
xhr=new XMLHttpRequest();
  }else{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xhr.onreadystatechange=returnchangepwd;
  xhr.open("post",url,true);
  xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  xhr.send(data);
}function returnchangepwd(){
if(xhr.readyState == 4 && xhr.status == 200){
var res=xhr.responseText;
if(res == 1){
alert('修改密码成功!');
self.parent.location='../index.php';
}else{
alert('修改失败!');
return false;
}
}
  }
</script>
</head>
<body>
修改 <span id='username'><?php echo $_SESSION["username"];?></span> 的密码:<br /><br />
旧密码:<input type="password" id="oldpwd"/><br /><br />
新密码:<input type="password" id="newp1"/><br />
新密码:<input type="password" id="newp2"/><br /><br />
<input type="button" value="修改密码" onclick="chpwd()"/><br /><br /><br />
</body>

解决方案 »

  1.   

     var data="user="+usr.innerText+"&old="+old.value+"&new="+n1.value; 注意key和value都应该用JS进行urlencode,另外注意一下相对路径是否正确?贴一下错误比较好。
      

  2.   

    错误提示是对象未定义……我怀疑是输入法来回切换,导致有时候中英文标点的问题,我用的是notepad++,不像eclipse有错误提示。
      

  3.   

    if(n1.value <> n2.value)是这里错了,我把这个 <> 不等于的改成!=就好了。