2015-04-14 2 views
1

У меня есть форма с различными полями ввода. Так что в течение очень минуты данные, вводимые пользователем, должны быть автоматически сохранены в базе данных. Как только запрос будет отправлен, он будет перенаправлен в файл расположений, в котором будут выполняться взаимодействия с базами данных.Автоматическое сохранение полей ввода полей с помощью jquery и ajax

Что я попробовал, я установил функцию тайм-аута для запуска каждый раз, когда страница загружена

var timer; 
$(document).ready(function() { 
timer = setTimeout("autosave()", 60000); 
}); 

И в функции автосохранения, я пытаюсь опубликовать входные данные по указанному URL

jQuery('form').each(function() { 
     jQuery.ajax({ 
      url: "http://localhost:7002/submitStudent.do?requestType=auto&autosave=true", 
      data: jQuery(this).serialize(), 
      type: 'POST', 
      success: function(data){ 
       if(data && data == 'success') { 
        alert("data saved"); 
       }else{ 
       } 
      } 
     }); 
    }); 
} 
} 

И как только запрос отправляется на стойки, он будет обрабатываться на основе запроса и данные будут отправлены.

Но в моем случае данные не сохраняются.

Не стесняйтесь делиться своими предложениями о том, что я делаю неправильно, и любыми другими способами сделать это?

Спасибо за ваше ценное предложение и время ..

FYI, я новичок в Jquery и Ajax технологии

JSFIDDLE: jsfiddle

+0

Сохраняются ли данные в вашей базе данных? – Kushal

+0

'requestType =" auto "' писать без двойных кавычек. –

+2

'setTimeout' не будет звонить каждую минуту. –

ответ

0

Я рекомендую использовать плагин ajaxForm

и в функции автосохранения просто огонь $ ('form'). submit();

это быстрый и хороший способ

+3

Итак, вместо того, чтобы указывать, что 'setTimeout 'запускается один раз, и' setInterval' более подходит там, вы просто предлагаете плагин для отправки формы? – Regent

+0

@Moayad AL-Najdawi, спасибо за ваш ответ. Но я планирую сделать это без плагина. – jaggs

+0

Я предположил, что вы назовете функцию автосохранения в другое время внутри него, тогда вы будете запускать автосохранение каждые 6 секунд. –

3

Я сделал fiddle согласно вашему требованию.

var timer; 

var fun = function autosave() { 
    alert(); 
    jQuery('form').each(function() { 
     jQuery.ajax({ 
      url: "http://localhost:7002/submitStudent.do?autosave=true", 
      data: jQuery(this).serialize(), 
      type: 'POST', 
      success: function (data) { 
       if (data && data == 'success') { 
        alert("data saved"); 
       } else {} 
      } 
     }); 
    }); 
} 
$(document).ready(function() { 
    setTimeout(fun, 1000); 
    //setInterval(fun,1000); 
}); 

Вы должны сосредоточиться на двух методах setTimeout и setInterval. setTimeout вызовет autosave() после 1 секунды загрузки DOM, но только один раз. setInterval будет вызывать autosave() через каждые 1 секунду. Вы можете прочитать его here.

Метод setTimeout() вызывает функцию или вычисляет выражение по истечении заданного количества миллисекунд. Совет: функция выполняется только один раз. Если вам нужно повторить выполнение, используйте метод setInterval().

Для получения дополнительной информации о вашем запросе ajax вам необходимо просмотреть ошибки консоли (F12).

+0

Спасибо за информацию. – jaggs

+0

Добро пожаловать! Надеюсь, это решит вашу проблему. – Sukanya

+0

Этот подход будет работать только для сценариев, в которых не так много вызовов ajax, запущенных за небольшой промежуток времени. Например, при параллельном запуске автоматических тестов пользовательского интерфейса это НЕ будет работать. Также лучше использовать 'debounce', чем' setTimeout'. – Edgar

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