日期:2014-05-16  浏览次数:20839 次

各位帮我看下最简单的ajax调用问题,运行不起来
服务端的调用运行没有任何问题,就是在AJAX的使用上有问题,代码如下:
根据用户输入的信息获取每个字的拼音首字母,然后再判断得到的字母信息在服务器上是否有目录
<script src="AjaxXml.js"></script>

<form method="POST" action="Admin_Class.asp" name="fm" id="fm">

<INPUT TYPE="hidden" NAME="sPath" Value="/zilia/">

分类名称<input type="text" name="subClsName" size="20" onblur="showInfo('getPY.asp?HanZi='+this.value,document.fm.subClsDir.value);"><hr>

目录名称:<input type="text" id="subClsDir" name="subClsDir" size="20" onblur="showInfo(ifDir.asp?sPath='+document.fm.sPath.value+'&DirName='+this.value,document.getElementById('txtHint').innerHTML);">
<span id="txtHint">*</span><br>

</form>

AjaxXml.js文件代码

var xmlHttp
function showInfo(sUrl,sShow)
{
  xmlHttp=GetXmlHttpObject()
  if (xmlHttp==null)
    {
    alert ("您的浏览器不支持AJAX!");
    return;
    }
  var url=sUrl;
  xmlHttp.onreadystatechange=stateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.setRequestHeader("Content-Type", "gb2312"); 
  xmlHttp.setRequestHeader("Content-Type","application/x-www-form-encoded");
  xmlHttp.send(null);

function stateChanged() 

if (xmlHttp.readyState==4)

sShow=xmlHttp.responseText;
}
}
function GetXmlHttpObject()
{
  var xmlHttp=null;
  try
    {
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
return xmlHttp;
}

------解决方案--------------------
<input type="text" id="subClsDir" name="subClsDir" size="20" onblur="showInfo('ifDir.asp?sPath='+document.fm.sPath.value+'&DirName='+this.value,document.getElementById('txtHint').innerHTML);">

少了个单引号'

其他暂时没发现什么
------解决方案--------------------
ajax是异步的,有个返回的过程,所以要使用sShow变量的值需要再回调函数中使用,就是在stateChanged函数中才能用并且xhr的readyState已经为4