工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1655|回复: 2

AJAX...[解决]

[复制链接]
发表于 2006-10-27 17:32 | 显示全部楼层 |阅读模式
问题是这样的:
open 打开的是xml文件时,responseText正常
open 打开的是php文件时,responseText
( 用alert(xhr.responseText) )
浏览器提示:system does not support the specified coding

是不是编码的问题?(用xml时显示中文也出现问题,但php文件echo的是英文也不行,什么也不显示,alert(xhr.responseText)语句得到上面的出错提示)

所有源代码上都没有设header之类的语句。


已解决:php.ini中设 default_charset = "gb2312"

index.php部分代码:

  1. <form  name="loginform" method="POST" action="">
  2.    
  3.     帐号:
  4.   <input name="logid" type="text" id="logid" onBlur="checkid(this)" size="20"/>
  5.   <span id="n1" class="notic"></span><br />
  6.     密码:
  7.   <input name="logpass" type="password" id="logpass" onBlur="checkpass(this);" size="20"/>
  8.   <span id="n2" class="notic"></span><br />
  9.   <input type="radio" name="logtype" value="manage" />
  10.     管理员
  11.   <input type="radio" name="logtype" value="teacher"/>
  12.     教师
  13.   <input type="radio" name="logtype" value="student" checked/>
  14.     学生<br />
  15.   <input name="button" type="button"  onClick="checkinput()" value="登陆"/>
  16.   <input name="reset" type="reset" value="重置" />
  17.   <input type="hidden" name="index">
  18.   </form>
  19. <script language="javascript">
  20. //提示帐号输入的错误
  21.     var xhr=false;
  22.     var xhrmethod="POST";
  23.         var xhrurl="test.xml";
  24.         var xhrasyn=true;
  25.     function xhrcallback(){
  26.                 alert("xhrcallbacking...");
  27.                 try{
  28.                         tmp=xhr.responseText;
  29.                 }catch(e){
  30.                         alert("不能赋值");
  31.                 }
  32.                 try{
  33.                         alert(String(tmp));
  34.                 }catch(e)
  35.                 {
  36.                         alert("A OH!!!");
  37.                 }
  38.                
  39.                 alert("outing...");
  40.                 document.title="登陆成功";
  41.         }

  42.         function checkid(t)
  43.         {
  44.        
  45.             //只充许输入数字
  46.                 var reg=/^\d+$/;
  47.                
  48.                 if(!(t.value.match(reg)))
  49.                         n1.innerHTML="错误帐号";
  50.                 else
  51.                         n1.innerHTML="";
  52.         }
  53.        
  54.         function checkpass(t)
  55.         {
  56.                 if(t.value.length<1)
  57.                         n2.innerHTML="请输入密码!";
  58.                 else
  59.                         n2.innerHTML="";
  60.         }
  61.        
  62.         function checkinput(){
  63.                 var t=document.forms["loginform"];
  64.                 var ltype;
  65.                 checkid(t.logid);
  66.                 checkpass(t.logpass);
  67.                        
  68.                 for(i=0;i<3;i++)
  69.                         if(t.logtype[i].checked)
  70.                                 ltype=t.logtype[i].value;
  71.                        
  72.                 if(n1.innerHTML=="" && n2.innerHTML==""){
  73.                         xhrurl=ltype+"login.php";
  74.                         //xhrurl="test.xml";
  75.                         var postvar="&id="+escape(t.logid.value)+"&pass="+escape(t.logpass.value);
  76.                         t.disabled=true;
  77.                         tisi.style.zIndex=2;
  78.                         startXHR();
  79.                         xhr.send(postvar);
  80.                 }
  81.         }
  82. </script>
  83. <script language="javascript" src="js/ajaxfns.js"></script>
复制代码




js/ajaxfns.js
function startXHR(){
        xhr=null;
          creatXHR();
       
        xhr.onreadystatechange=setStateHandle;
        xhr.open(xhrmethod,xhrurl,xhrasyn);//若改成xhr.open(xhrmethod,"abc.xml",xhrasyn)则没问题。
        if(xhrmethod=="POST")
                 xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        if (xhr.overrideMimeType) {
                xhr.overrideMimeType('text/xml');
        }
}

function creatXHR(){
        if(window.ActiveXObject)
                xhr=new ActiveXObject("Microsoft.XMLHTTP");       
        else
                xhr=new XMLHttpRequest();
}

function setStateHandle(){
        if(xhr.readyState==4){
                if(xhr.status==200){
                        xhrcallback();
                }       
        }       
}

[ 本帖最后由 iptton 于 2006-11-3 20:01 编辑 ]
发表于 2006-10-27 17:36 | 显示全部楼层
xhr=null;
这个不可以是局部变量吧?
你先试试看
回复

使用道具 举报

 楼主| 发表于 2006-10-27 17:42 | 显示全部楼层
不是这个问题。。。。

open("POST","test.xml",true);如果把上面的代码改成这样就没问题了(事实还有个问题:中文乱码)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-6-6 07:20

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表