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来响应用户点击事件。
<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来响应用户点击事件。