• Бесплатный ВЕБИНАР по OSINT с Екатериной Тьюринг: ➡️9 февраля в 19:00 (мск) пройдет урок

    Как безопасно искать информацию в открытых источниках

    🔥 Записаться 🔥

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

  • Автор темы Автор темы Linel
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
L

Linel

Уважаемые программисты,

Помогите решить проблему. Недавно начал изучать 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
{
//Ошибка выполнения запроса
}
}
}

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!