2014-02-19 4 views
1

Я новичок в AJAX/JQuery/Javaascript, поэтому, пожалуйста, простите мое невежество. Я нашел код, который поможет мне отобразить окно AJAX после нажатия кнопки отправки формы.Скрыть javascript сообщение через 10 секунд

Вот код:

var ray={ 
ajax:function(st) 
    { 
     this.show('load'); 
    }, 
show:function(el) 
    { 
     this.getID(el).style.display=''; 
    }, 
getID:function(el) 
    { 
     return document.getElementById(el); 
    } 
} 

Вот HTML форме:

<div id="load" style="display:none;">Loading... Please wait.</div> 
<form action="test_form.php" method="POST" onsubmit="return ray.ajax()"> 
<input type="hidden" name="value1" value="value1>"> 
<input type="submit" value="Submit"> 
</form> 

Сообщение загрузки отображается только в порядке, когда кнопка нажата, но никогда не исчезает. В идеале я хотел бы, чтобы сообщение исчезло после завершения работы, но скрытие его через 10 секунд будет работать так же хорошо.

Я пробовал различные изменения, используя hide() и setTimeout(), но мой недостаток опыта работы с AJAX/JavaScript продолжает разрывать код.

+0

Функции ajax обычно поддерживают обратные вызовы, вызываемые при возврате данных с сервера или в условиях ошибки. Ваша логика «скрыть» должна идти туда, где есть разделы обратного вызова вашей библиотеки ajax. –

+0

где же действительно код ajax? –

+0

Является ли вызов AJAX на самом деле вызываемым? Из вашего ограниченного фрагмента кода вы не вызываете вызов AJAX. Вместо этого вы просто загружаете «загрузка, пожалуйста, подождите», а затем выполняйте POST в форме. – PressingOnAlways

ответ

3

Здесь вы идете: http://jsfiddle.net/DHgN4/1/

Вы сказали, что в комментариях ниже ваш вопроса, что вы просто хотите его закрыть через 10 секунд. Это сделает это.

Очевидно, мне пришлось прокомментировать ваш form, потому что скрипка не может позвонить test_form.php, поэтому я создал кнопку, чтобы продемонстрировать код. Этого должно быть достаточно, чтобы заставить вас идти. Основной частью скрипки является эта строка:

setTimeout(function(){$("#load").hide();},10000); 

Это скроет ее через 10 секунд, используя jQuery. Если вы не хотите использовать JQuery то изменить его к этому ...

setTimeout(function(){document.getElementById('load').style.display='none';},10000); 

Я не понимаю, почему вы хотите настроить таким образом. Выполняя реальный вызов ajax, отправляя данные с помощью ajax, тогда ожидание и реагирование на ответ будет более чистым.

+0

Ваше решение работало блестяще! И я согласен, что использование «REAL» AJAX было бы намного лучше. Я знаю, что это будет просто, но кажется, что каждый раз, когда я принимаю удар, я теряю время. Это может иметь много общего с моим отсутствием опыта, а также тем фактом, что я использую php-класс TCPDF. Если вы можете поделиться любыми ссылками или фрагментами, которые помогли бы мне с этой задачей, я был бы чрезвычайно благодарен. – PatC

+0

Вам не нужно использовать jQuery для выполнения вызовов ajax, начинайте здесь: http://www.w3schools.com/ajax/, перейдите от одной главы к другой и посмотрите на пример. Я предпочитаю использовать jQuery, но вот API (много примеров внизу страницы) https://api.jquery.com/jQuery.ajax/, и если вы просто Google «site: stackoverflow.com jquery ajax help», вы увидите множество простых примеров с ответами. – gfrobenius

+0

Большое спасибо за это. Я уже много раз проходил W3S, но не смог выполнить это через AJAX. Я уверен, что это только я.Некоторая добавленная настойчивость доставит мне остальную часть пути. Большое спасибо, снова! – PatC

Смежные вопросы