我试图使用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;
答案 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