button对AJAX的影响:responseText在FF下输出为空

案例:
<button onclick="javascript:Verify();">验证</button>

AJAX部分:
function Verify()
{
    var xmlHttp = false;
    try
    {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      try
      {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e2)
      {
        xmlHttp = false;
      }
    }
    if (!xmlHttp && typeof XMLHttpRequest != 'undefined')
    {
      xmlHttp = new XMLHttpRequest();
    }
    var url = "./ReturnBool.aspx";
    xmlHttp.open("GET", url, true);
    xmlHttp.onreadystatechange =
           function(){
                        alert(xmlHttp.readyState);
                        if(xmlHttp.readyState == 4)
                        {
                            alert(xmlHttp.status);//输出状态看看是200
                            alert(xmlHttp.responseText);
                        }
                      };
    xmlHttp.send(null);
}

对应的ASP代码:
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
      Response.Write("True");
      Response.End();
    }
}

在FF下面运行alert顺序是2-3-4-200-True-1-200-True,如果将alert(xmlHttp.readyState);和 alert(xmlHttp.status);去掉,输出将是空值。而这个空值将是最终输出到页面。
将tag button改成input button可以克服这个问题。因此在用AJAX的地方不要用button来响应用户点击事件。

posted on 2009-07-29 23:36  游江南  阅读(668)  评论(0编辑  收藏  举报

导航