Я уже много раз пытался отправить данные формы через 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. Строка состояния никогда не меняет свой статус, даже если данные были переданы на сервер!
XMLHttpRequest
и т. Д. Напрямую вместо библиотеки JS? - person Paul Grime   schedule 01.05.2013XMLHttpRequest
напрямую, jQuery уже используется для управления DOM, поэтому немного странно не использовать встроенные команды, такие как . ajax. Я не думаю, что это вызывает проблему в данном случае. - person Turnerj   schedule 01.05.2013XMLHttpRequest
ведет себя одинаково во всех браузерах / версиях / ОС? - person Paul Grime   schedule 01.05.2013console.log(document.baseURI); console.log(window.location.href)
? SO удалил схему перед example.com в вашем предыдущем комментарии или вы называли это так? - person Nickolay   schedule 01.05.2013