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

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем Linel, 10 ноя 2010.

Статус темы:
Закрыта.
  1. Linel

    Linel Гость

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

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

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

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

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


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

    Код (Text):
    xmlHttp = createXMLHTTP();

    function createXMLHTTP()
    {
    var xmlHttp;

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

    if (xmlHttp)
    return xmlHttp;
    }

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


    Код (Text):
    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 и не понимаю в чем может быть ошибка. Помогите разобраться: я делаю что то не так? Или проблема в чем то другом? В какую сторону копать?
     
  2. clayton

    clayton Гость

    Ат ты не пытался с серверного скрипта возвращать какой-нибудь результат в обработчик onreadystatechange объекта XmlHttpRequest. Т. е. после отправки данных серверному скрипту, пускай тот выполнит всю необходимую работу( в твоем случае обработку БД) и вернет какой нибудь результат, типа "TRUE" или что-то другое, назад в JS скрипт.
    Например:
    Код (LotusScript):
    xmlHttp.onreadystatechange = function()
    {
    if (xmlHttp.readyState == 4)
    {
    if(xmlHttp.status == 200)
    {
    //Запарос выпонен успешно 
    //Результат запроса в xmlHttp.responseText
    }
    else
    {
    //Ошибка выполнения запроса
    }
    }
    }
    Может тут вылезут какие-то подводные камни
     
Загрузка...
Похожие Темы - Ajax некорректная работа
  1. aameno2
    Ответов:
    1
    Просмотров:
    488
  2. solomonec
    Ответов:
    1
    Просмотров:
    1.425
  3. Сергей74
    Ответов:
    1
    Просмотров:
    1.041
  4. АВаТаРчег
    Ответов:
    1
    Просмотров:
    1.045
  5. obnal24
    Ответов:
    0
    Просмотров:
    889
Статус темы:
Закрыта.

Поделиться этой страницей