2013-10-13 8 views
1

Im пытается опубликовать форму с ajax и ее работой отлично ... но когда я пытаюсь поставить для автоматической отправки формы, это не работает ... Если я нажму кнопку отправки, ее штраф .. но если я setInterval ("submitform();", 5000); ajax не работает (я имею в виду, что он перезагружает страницу).JQuery AJAX auto submit form

ajax.js

$(document).ready(function(){ 
    $('#form1').submit(function(){ 
     $.ajax({ 
      url : 'inserir.php', 
      type : 'POST', 
      data : $('form').serialize(), 
      success: function(data){ 
       $('#resultado').html(data); 
      } 
     }); 
     return false; 
    }); 
}) 

form.html

<html> 
<head> 
    <script type="text/javascript" src="ajax.js" ></script> 
</head> 
<body> 
<form id="form1" method="POST"> 
    Código: <br /> 
    <input type="text" name="idVeiculo" id="idVeiculo" value="1"/> 
    <br /><br /> 
    Nome: <br /> 
    <input type="text" name="nome" id="nome" /><input type="submit"> 
</form> 

<div id="resultado"></div> 
<script type="text/javascript"> 

    window.onload=function(){ 
    setInterval("submitform();", 5000); 
    } 
    function submitform(){ document.getElementById('form1').submit(); } 

</script> 
</body> 
</html> 

Так что, если я нажимаю кнопку, он отлично работает ... Если я использую, который автоматически представить функцию, перезагружает страницу, а чем просто отправить данные в файл php.

Спасибо за помощь!

ответ

4

От MDN

https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.submit

onsubmit обработчик события форме (например, onsubmit = "возвращение ложным;") не будет срабатывать при вызове этого метода из приложений, основанных на Gecko. В целом, это не гарантируется, что пользовательские агенты HTML могут быть вызваны.

Вы должны отделить вызов Ajax в функцию и просто вызвать его в функции таймаута

$(document).ready(function(){ 
    $('#form1').submit(ajax); 
}) 
function ajax(){ 
     $.ajax({ 
      url : 'inserir.php', 
      type : 'POST', 
      data : $('form').serialize(), 
      success: function(data){ 
       $('#resultado').html(data); 
      } 
     }); 
     return false; 
} 
... 
window.onload=function(){ 
    setInterval(ajax, 5000); 
}