如何使用Ajax .serialize()数据将表单发布到PHP?

Gre*_*g L 2 javascript php ajax wordpress jquery

我正在使用WordPress,并且在发送之后无法确定如何处理来自Ajax的序列化数据.我在这个网站上看到parse_str了我需要的内容,但我不确定如何使用它.

这是表单提交的jQuery

jQuery( document ).ready( function( $ ) { 
    $( '#log_data' ).submit( function( event ) { 
        event.preventDefault(); 
        console.log( $( this ).serialize() );

        var data = $(this).serialize();
        action = 'my_submit_log_action';
        $.post( 
            ajaxurl, 
            data,
            function ( response ) { 
                if ( ! response.success ) { 
                    alert( 'Failure!' ); 
                } 
                alert( 'Success!' );                          
            } 
        ); 
    }); 
});
Run Code Online (Sandbox Code Playgroud)

因为这是在WordPress中,我必须传递一个动作,以便WordPress知道将这些数据传递给哪个函数.我不确定我是否正确行动(见上文).

第二部分是PHP,这是我不明白的.如何获取序列化数据并将其发布到数据库?

add_action('wp_ajax_my_submit_log_action', 'my_submit_log_action');
add_action('wp_ajax_nopriv_my_submit_log_action', 'my_submit_log_action');
function my_submit_log_action() {
    global $wpdb;

    $user_id = $_POST['user_id'];
    $length = $_POST['length'];
    $ground = $_POST['ground'];
    $date = $_POST['date'];
    $notes = $_POST['notes'];

    $wpdb->insert('wp_jo_plugin_options', array (
        'user_id' => $user_id,
        'length'  => $length,
        'ground'  => $ground,
        'date'    => $date,
        'notes'    => $notes,
    ) );

    die();
}
Run Code Online (Sandbox Code Playgroud)

小智 5

提交后序列化表格数据

<input type="hidden" value="<?php echo base64_encode(serialize($_POST)); ?>" name="posted" />
Run Code Online (Sandbox Code Playgroud)

然后在ajax中通过POST发送此数据.或者你可以用这个--------

$( "form" ).on( "submit", function( event ) {
  event.preventDefault();
  console.log( $( this ).serialize() ); //serialize form on client side
  var pdata = {
     action: "ajaxFunction",
     postdata: $(this).serialize()
  }
  $.post( "<?php echo admin_url('admin-ajax.php'); ?>", pdata, function( data ) {
       $( ".result" ).html( data );
  });
});
Run Code Online (Sandbox Code Playgroud)