ОБСУЖДЕНИЕ

Ajax некорректная работа скрипта

1 ответов 4,1 тыс.
Статус
Закрыто для дальнейших ответов.
Автор темы
Уважаемые программисты,

Помогите решить проблему. Недавно начал изучать AJAX. Решил соорудить скрипт, который асинхронно добавлял бы какие либо данные из формы в базу данных (MySQL).

Алгоритм программы следующий:

1) Я заполняю форму
2) При нажатии на кнопку активируется функция, которая асинхронно запрашивает PHP файл и передает ему данные из формы GET запросом.
3) PHP файл добавляет данные в Базу Данных.

Собственно, отрывки из кода.


Тут я создаю xmlHttp, с которым я буду работать дальше.

Код:
xmlHttp = createXMLHTTP();

function createXMLHTTP()
{
var xmlHttp;

try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}

if (xmlHttp)
return xmlHttp;
}


А тут функция, которая считывает данные из формы и делает запрос PHP файлу, передавая ему параметры через GET запрос.


Код:
function addBook()
{
if (xmlHttp)
{
bookTitle = document.getElementById("bTitle").value;
bookAuthor = document.getElementById("bAuthor").value;
bookPages = document.getElementById("bPages").value;
bookPrice = document.getElementById("bPrice").value;

xmlHttp.open("GET", "addBook.php?title="+bookTitle+"&author="+bookAuthor+"&pages="+bookPages+"&price="+bookPrice, true);
xmlHttp.send(null);

document.getElementById("bTitle").value="";
document.getElementById("bAuthor").value="";
document.getElementById("bPages").value="";
document.getElementById("bPrice").value="";

document.getElementById("answer").innerHTML = "<font color='green'>Сервер успешно выполнил операцию</font>";
}
}

Даже не знаю как объяснить в чем проблема. Вообщем, если открыть страничку с формой (ну и скриптом) и не обращаться к скрипту какое то время (скажем, минут 5), то при попытке добавления информации в БД ничего не произойдет. Если незамедлительно повторить попытку, то все заработает. Суть проблемы заключается в том, что функция работает только в том случае, если к ней недавно обращались. Иначе, по истечению какого то времени она как будто "засыпает". Очевидно, что проблема таится где то на стороне клиента, так как GET запрос я пробовал эмулировать и все работает отлично.

Я только начал изучать AJAX и не понимаю в чем может быть ошибка. Помогите разобраться: я делаю что то не так? Или проблема в чем то другом? В какую сторону копать?
 
Ат ты не пытался с серверного скрипта возвращать какой-нибудь результат в обработчик onreadystatechange объекта XmlHttpRequest. Т. е. после отправки данных серверному скрипту, пускай тот выполнит всю необходимую работу( в твоем случае обработку БД) и вернет какой нибудь результат, типа "TRUE" или что-то другое, назад в JS скрипт.
Например:
Код:
xmlHttp.onreadystatechange = function()
{
if (xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
//Запарос выпонен успешно	
//Результат запроса в xmlHttp.responseText
}
else
{
//Ошибка выполнения запроса
}
}
}

Может тут вылезут какие-то подводные камни
 
Статус
Закрыто для дальнейших ответов.