2016-06-27 3 views
0

Я пытаюсь отправить форму в базу данных с помощью ajax. Я проверил форму и php, которые все работают, когда я вручную отправляю. Но проблема у меня есть, когда я пытаюсь автоматически отправлять на загрузку страницы, используя ajax, она просто не срабатывает.Ajax post form auto submit on load

У меня нет ошибок в консоли, и форма удаляется. Это просто Аякса, не удар в.

setTimeout(function() { 
 
    $("form.display-hide").submit(function(e) { 
 
    e.preventDefault(); 
 
    $.ajax({ 
 
     url: '//www.mysite.com/inc/page-trustpilot.php', 
 
     type: "POST", 
 
     data: $(this).serialize(), 
 
     success: function() { 
 
     alert('hello'); 
 
     } 
 
    }); // AJAX Get Jquery statment 
 

 
    }); 
 
    $("form.display-hide").remove(); 
 
}, 2000);
<form class="display-hide" method="post"> 
 
    <input class="totaltrsut" type="text" value="" name="totaltrsut"> 
 
    <input class="totalreviews" type="number" value="" name="totalreviews"> 
 
    <input type="hidden" name="token" value="<?php echo $newToken; ?>"> 
 
    <input class="committodb" type="submit" value="Add Stats"> 
 
</form> 
 

 
<?php 
 
if (!empty($_POST)) { 
 
global $wpdb; 
 

 
$successa=$wpdb->update('6H921_dc_additional', array('addi_value' => $_POST['totaltrsut']), array('addi_id' => 1), array('%s', '%d'), array('%d')); 
 
$successb=$wpdb->update('6H921_dc_additional', array('addi_value' => $_POST['totalreviews']), array('addi_id' => 2), array('%s', '%d'), array('%d')); 
 
if($successa && $successb){ 
 
\t //echo 'data has been saved'; 
 
} else { 
 
\t //echo 'data has not been saved'; 
 
\t } 
 
} 
 
?>

+1

Хороший вопрос. Вы просто связываете слушателя 'submit' с' form.display-hide' с задержкой в ​​2 с. ;) – eisbehr

ответ

1

, кажется, что вы удаляете форму, прежде чем представить его:

setTimeout(function() { 
    //registering submit handler 
    $("form.display-hide").submit(function(
     //some code 
    }); 

    //removing the form immediatly 
    $("form.display-hide").remove(); 
}, 2000); 

Может быть, вы хотите, чтобы отправить форму перед его удалением:

setTimeout(function() { 
    //registering submit handler 
    $("form.display-hide").submit(function(
     //some code 
    }); 

    //submit the the form, which would invoke the submit handler 
    $("form.display-hide").submit(); 

    //removing the form immediatly 
    $("form.display-hide").remove(); 
}, 2000); 
+0

LOL типичный. Спасибо друг – DCdaz

0

Вы должны вызвать submit слушателя на вашей форме. Дайте после попытки

setTimeout(submitForm, 2000); 

function submitForm(){ 

$("form.display-hide").submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: '//www.mysite.com/inc/page-trustpilot.php', 
     type: "POST", 
     data: $(this).serialize(), 
     success: function() { 
     alert('hello'); 
     }, 
     complete: function(){ $("form.display-hide").remove(); } 
    }); // AJAX Get Jquery statment 

    }); 
    $("form.display-hide").trigger('submit'); 
} 
0

Это:

$("form.display-hide").submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
    url: '//www.mysite.com/inc/page-trustpilot.php', 
    type: "POST", 
    data: $(this).serialize(), 
    success: function() { 
    alert('hello'); 
    } 
}); // AJAX Get Jquery statment 

не представит форму. $().submit() - обработчик событий, он не запускает отправку формы.

Используйте .trigger(), чтобы вызвать форму для отправки и зарегистрировать обработчик для события представить перед вызовом setTimeout как это:

$("form.display-hide").submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: '//www.mysite.com/inc/page-trustpilot.php', 
     type: "POST", 
     data: $(this).serialize(), 
     success: function() { 
     alert('hello'); 
     } 
    }); // AJAX Get Jquery statment 

Теперь, когда вы зарегистрировали обработчик событий вы можете пойти дальше и назвать setTimeout

setTimeout(function(){ 
    $('form.display-hide').trigger(); 
}, 2000);