防止默认设置不停止页面刷新。在WordPress站点中使用AJAX向php传递表单信息和从php传递表单信息

时间:2021-01-04 作者:theodore

我已经看到了一些可以追溯到2011年左右的方法,以便采用表单并通过ajax发布其数据。jquery。我已经尝试了几次,尽管使用了preventdefault functions.

我试图从我的表单中获取数据,让jQuery通过定位实际的表单id来侦听表单提交,然后调用PHP函数,以便将数据发布到db。最终,除了重新加载页面之外,什么都不会发生。由于这是一个可湿性粉剂页面,我知道一些功能和处理不同于常规网页。像ajax url这样的东西可以传递回函数等。这就是我在这里发布此内容的原因。

表格:

function add_entry(){
    ?>
    <form action="" method="post" id="ajax-add-to-form" autocomplete="off">
        <input type="text" id="FName" name="FName" placeholder="First Name" value="" required>
        <input type="text" id="LName" name="LName" placeholder="Last Name" value="" required>
        <select id="size" required>
            <option value="">Size</option>
            <?php  for($i=1; $i<=15; $i++){?>
                <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
            <?php } ?>
        </select>
        <input type="text" id="MobileNumber" name="MobileNumber" placeholder="Phone Number" value="" required>
        <input type="email" id="Customer_Email" name="Customer_Email" placeholder="Email Address" value="" required>
        <input type="submit"  name="ajax-add-to-form" value="Add to">
<?php
    
    }
add_shortcode(\'add_entry\', \'add_entry\');


</form>

the jquery

jQuery(\'document\').ready( function(){
jQuery(\'#ajax-add-to-form\').on(\'submit\', function(e){
e.preventDefault(); 
jQuery(\'#jx-loading\').show();
jQuery.ajax({
    type: \'post\',
    url: my_ajax.ajax_url,
    data: { 
    action: \'ajax-php-function\'},
    success: function(data)
    {jQuery(\'#jx-loading\').hide();}
})          
}); 
return false;       
});

the php

function ajax-php-function() {          
    global $wpdb;   
    $table = "mytablename";     
    $FName= $_POST[\'FName\'];    
    $LName= $_POST[\'LName\'];    
    $MobileNumber= $_POST[\'MobileNumber\'];  
    $Email = $_POST[\'Email \'];          
    $data = array(
    \'FName\' => $FName,
    \'LName\' => $LName,      
    \'MobileNumber\' => $MobileNumber,        
    \'Email\' => $Email);     
    $success = $wpdb->insert( $table, $data );          
    if($success)
    {echo json_encode($last_data);} 
    else{       echo \'error\';   }   die;            
}   

1 个回复
SO网友:theodore

最终,表单及其旧处理程序被网站中的其他元素丢弃。可能是WP或我无法删除的少数插件之一,因为它是页面生成器(Elementor,Elementor Essentials)。禁用所有其他插件后,它的范围缩小到了这一点。代码解决方案是:。。。。

jQuery(document).on(\'submit\', \'#ajax-add-to-waitlist-form\', function(e){
  e.preventDefault();
。。。。。。。

而不是

jQuery(\'#ajax-add-to-form\').on(\'submit\', function(e){
e.preventDefault(); 

相关推荐

AJAX form post returns 0

我正在开发一个简单的插件,它显示了一个HTML表单,用户可以在其中输入一个用于查询外部API的关键字。我目前已经设置了表单和相关的jQuery,但是当传递到插件的PHP文件时,我得到的响应仅仅是0。此时,我只想得到除0以外的任何响应(请参见echo "Whyyyy" 零件)。我一直在浏览互联网,觉得自己已经尝试了所有建议,这让我觉得自己在哪里犯了错误。任何帮助都将不胜感激。这是插件的PHP:defined(\'ABSPATH\') or die(\'Ah ah ah. You didn