AJAX...[解决]
问题是这样的: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部分代码:
<formname="loginform" method="POST" action="">
帐号:
<input name="logid" type="text" id="logid" onBlur="checkid(this)" size="20"/>
<span id="n1" class="notic"></span><br />
密码:
<input name="logpass" type="password" id="logpass" onBlur="checkpass(this);" size="20"/>
<span id="n2" class="notic"></span><br />
<input type="radio" name="logtype" value="manage" />
管理员
<input type="radio" name="logtype" value="teacher"/>
教师
<input type="radio" name="logtype" value="student" checked/>
学生<br />
<input name="button" type="button"onClick="checkinput()" value="登陆"/>
<input name="reset" type="reset" value="重置" />
<input type="hidden" name="index">
</form>
<script language="javascript">
//提示帐号输入的错误
var xhr=false;
var xhrmethod="POST";
var xhrurl="test.xml";
var xhrasyn=true;
function xhrcallback(){
alert("xhrcallbacking...");
try{
tmp=xhr.responseText;
}catch(e){
alert("不能赋值");
}
try{
alert(String(tmp));
}catch(e)
{
alert("A OH!!!");
}
alert("outing...");
document.title="登陆成功";
}
function checkid(t)
{
//只充许输入数字
var reg=/^\d+$/;
if(!(t.value.match(reg)))
n1.innerHTML="错误帐号";
else
n1.innerHTML="";
}
function checkpass(t)
{
if(t.value.length<1)
n2.innerHTML="请输入密码!";
else
n2.innerHTML="";
}
function checkinput(){
var t=document.forms["loginform"];
var ltype;
checkid(t.logid);
checkpass(t.logpass);
for(i=0;i<3;i++)
if(t.logtype.checked)
ltype=t.logtype.value;
if(n1.innerHTML=="" && n2.innerHTML==""){
xhrurl=ltype+"login.php";
//xhrurl="test.xml";
var postvar="&id="+escape(t.logid.value)+"&pass="+escape(t.logpass.value);
t.disabled=true;
tisi.style.zIndex=2;
startXHR();
xhr.send(postvar);
}
}
</script>
<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 编辑 ] xhr=null;
这个不可以是局部变量吧?
你先试试看 不是这个问题。。。。
open("POST","test.xml",true);如果把上面的代码改成这样就没问题了(事实还有个问题:中文乱码)
页:
[1]