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

标签 javascript php jquery ajax wordpress

我正在使用 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!' );                          
            } 
        ); 
    }); 
});

因为这是在 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();
}

最佳答案

提交后序列化表单数据

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

然后在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 );
  });
});

关于javascript - 如何使用 Ajax .serialize() 数据将表单发布到 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19510939/

相关文章:

javascript - 在 div 列中包装 iframe

Javascript 动态行列

javascript - 取消两者 - 子级内部的父级和子级函数

即使用户离开网站也执行 MySQL 查询的 PHP 服务器端计时器?

javascript - 如何将 css 添加到 jquery backstretch?

javascript - 在选中的复选框上设置属性,否则删除属性

javascript - 使用 AJAX 提交动态表单?

php - 当用户名相同时我如何对列值求和 - Laravel 5.2?

jquery - 如何停止jQuery(html)下载内部图片和资源

jQuery自动元素定位