现在有很多次我一直在尝试通过 Ajax 将表单数据发送到我的服务器脚本而不刷新页面(使用表单的 onSubmit 事件)。这一切都适用于所有浏览器(Chrome、IE 等),但对于 Firefox,处理仍在继续。我的意思是,即使数据已经发送到服务器端(是的,很多时候,我已经在服务器端获取了数据,但客户端仍在处理中),客户端不会响应连续调用.
例如,考虑我的示例代码之一:
这是Javascript
function submitComment(id)
{
//id is the id of the postbox
var content=$("#"+id).val();
var xmlhttp;
if(window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
else
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
//action taken in response to the script from server in response to this form submission, eg, enabling back the submit button
$('input[type="submit"]').removeAttr('disabled');
}
}
$('input[type="submit"]').attr('disabled','disabled');
xmlhttp.open("POST",host+"comment.php?mode=newpost",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("post="+content);
$('#status').html('Posting your comment. Please wait...');//shows this status as long as gets no response from server
return false;
}
这是它的 HTML:
<form id='newpostform' method=post action='' onSubmit="return submitComment('post')" >
<textarea id='post' name='post'></textarea>
<input type=submit value=Post>
<span id='status' style='padding:10px; font-size:12px; color:black; font-family:cambria, segoe ui;'>
</span>
</form>
因此,在除 Firefox 之外的所有浏览器中,提交按钮被禁用一段时间,直到脚本将帖子传送到服务器并且当服务器响应时,提交按钮被激活并更新状态。
问题正是在 Firefox 中出现的。即使数据已经传送到服务器,状态栏也永远不会改变它的状态!