Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обнуление результата ajax запроса (https://javascript.ru/forum/misc/29378-obnulenie-rezultata-ajax-zaprosa.html)

Eser 25.06.2012 20:49

Обнуление результата ajax запроса
 
Подскажите пожалуйста:
Есть кнопка при нажатии на которую появляется оверлейное окно с полем input, в котором вбиваем некое название и отправляем php скрипту, скрипт пишет в БД и выводит результат.
Все нормально работает.
Проблема вот в чем:
При повторном открытии оверлейной формы, предыдущий результат работы php скрипта не обнуляется.

Вот код:
<script>
//Вызов оверлейного окна
function WindowVirtualOrg()
{
var div = document.getElementById('WindowVirtualOrg');
if(div.style.display == 'none') 
{
div.style.display = 'block';
}
}


//Выполнение ajax запроса
function start(){
  xhttp=new XMLHttpRequest();
   xhttp.onreadystatechange=function(){
      if (xhttp.readyState==4 && xhttp.status==200)
         document.getElementById('ajax').innerHTML=xhttp.responseText;
        }
   xhttp.open('POST','php/test.php',true);
   <!--Установим тип передаваемого содержимого как у форм-->
   xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
   var data=document.getElementById('name_virtual_org').value;
   if(data)
   {
   xhttp.send('name='+data);
   
   document.getElementById('form_name_virtual_org').reset();
   }
   else
   {
   document.getElementById('ajax').innerHTML='';
   document.forms.form_name_virtual_org.name_virtual_org.focus();
   }
}
</script>

//html форма отправки
<form id='form_name_virtual_org'>
<input type='text' id='name_virtual_org' autofocus><button onclick='start()'><img src='pic/24/save_24.png'>Сохранить</button>
</form>
<div id='ajax'></div>


И php код:
<?php
session_start();

$db_link_default = mysqli_connect(
'127.0.01', /* Хост, к которому мы подключаемся */
'root', /* Имя пользователя */
'158964', /* Используемый пароль */
'xz'); /* База данных для запросов по умолчанию */

if(!$db_link_default)
{
echo ("Невозможно подключиться к базе данных. Код ошибки: %s\n");
}

//Входные данные
$name=$_POST[name];

/* Посылаем запрос серверу */
$result= mysqli_query($db_link_default,"select count(*) from virtual_organizations where name='$name'");
$row = mysqli_fetch_row($result);
if(!$row[0])
{

$insert=mysqli_query($db_link_default,"insert into virtual_organizations (name) value('$name')");
echo "<img src='pic/24/apply_24.png'>Сохранено значение &laquo$name&raquo";

/* Освобождаем используемую память */
mysqli_free_result($result);
}
else
{
echo "<img src='pic/24/alert_24.png'>Организация с именем уже есть! ";
}

/* Закрываем соединение */
mysqli_close($db_link_default);

?>

dmitriymar 25.06.2012 21:00

Цитата:

Сообщение от Eser
При повторном открытии оверлейной формы, предыдущий результат работы php скрипта не обнуляется.

ну а причём здесь код тот что вы привели?
вам инпут нужно очистить?
document.getElementById('name_virtual_org').value="";

а вы уверенны что у вас эта форма есть?
document.getElementById('form_name_virtual_org').r eset();

devote 25.06.2012 21:01

Цитата:

Сообщение от Deff
посоль браузер кеширует запрос

ты чего... POST-запросы браузеры не кешируют.

dmitriymar 25.06.2012 21:01

Цитата:

Сообщение от Deff
Cкорее всего повторного запроса просто нет - посоль браузер кеширует запрос
Пробуйте так:

xhttp.open('POST','php/test.php?'+Math.random(),true);

пост не кешируется. гет кешируется

Deff 25.06.2012 21:05

dmitriymar,
Гы у мну всё кешируецо , особливо в ИЕ

dmitriymar 25.06.2012 21:06

Цитата:

Сообщение от Deff
Гы у мну всё кешируецо , особливо в ИЕ

неправильный комп. пост не кешируется
и у devote, не кешируется :)

Deff 25.06.2012 21:34

:lol: Точно - мну соврал

Eser 25.06.2012 22:17

Так вообще не работает:
xhttp.open('POST','php/test.php?'+Math.random(),true);


А так работает только если ajax запрос не выполнять, т.е при первом вызове оверлейной формы, но не выполняя запрос:
document.getElementById('form_name_virtual_org').reset();

Eser 25.06.2012 22:23

Все спасибо разобрался.


Часовой пояс GMT +3, время: 15:38.