Ajax帖子表单自动提交加载

时间:2016-06-27 08:03:52

标签: javascript php jquery ajax forms

我试图使用ajax将表单发布到数据库。我测试了表单和php,当我手动提交时,所有工作。但我遇到的问题是,当我尝试使用ajax在页面加载时自动提交时,它似乎无法触发。

我没有收到任何控制台错误,表格确实被删除了。只是ajax并没有开始。



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){
	//echo 'data has been saved'; 
} else {
	//echo 'data has not been saved'; 
	}
 }
?>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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');
}

答案 2 :(得分:0)

此:

// Gets the value from the binding; if it's an observable, 
// it "gets" the inner value
var bindingValue = ko.unwrap(valueAccessor()); 

不会提交表格。 $("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