Ajax form resubmission after failed validation (causes invalid error message)

Support MB Frontend Submission Ajax form resubmission after failed validation (causes invalid error message)Resolved

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #34240
    Nicholas CoxNicholas Cox
    Participant

    Hi,

    I was just testing a form and found an issue when ajax is enabled. I have tested this on several forms and can reproduce the error.

    So if you create a basic form e.g. post_title

    
    add_filter( 'rwmb_meta_boxes', 'dc_product_register_meta_boxes' );
    
    function dc_product_register_meta_boxes( $meta_boxes ) {
        
        $meta_boxes[] = [
            'title'   => 'Products',
            'post_types' => 'product',
            'storage_type' => 'custom_table', 
            'table'        => $wpdb->prefix . 'dc_products',
            'id'      => 'dc-product',
            'context' => 'normal',
            'fields'  => [
                [
                    'type'  => 'text',
                    'name'  => 'Title',
                    'id'    => 'post_title', 
                    'class' => 'dc-post-title',
                    'limit' => 50, 
                    'required' => true,
                ]
            ],
        ];
    
        return $meta_boxes;
    }
    

    Then add the shortcode to a page with ajax enabled
    [mb_frontend_form id="dc-product" confirmation="Your post has been successful" ajax="true"]

    Go to the form and enter the post title field as 'test'. The form fails and displays the error message

    
    add_filter( 'rwmb_frontend_validate', function( $validate, $config ) {
        
        if ( 'dc-product' !== $config['id'] ) {
            return $validate;
        }
        if ( $_POST['post_title'] == 'test' ) {
            $validate = 'test error'; // Return a test error message
        }
        return $validate;
        
    }, 10, 2 );
    

    Then go an update the post title to be anything else (so it validates) and then you will see that instead of the form submitting successfully you see the following error message
    "Invalid request. Please try again."

    I have tested this several times and cannot get it to validate if the form fails using 'rwmb_frontend_validate'. I assume the problem is from
    /mb-frontend-submission/src/Shortcode.php (line 104)

    Thanks

    #34259
    Long NguyenLong Nguyen
    Moderator

    Hi,

    From the new version 4.0.0, MB Frontend Submission uses table wp_options to store form config and errors with the option key mbfs_key. Please check the frontend form on your site if it has this hidden field https://monosnap.com/file/M01XVOw9JKsR1ZGxlOTPgPOtWuwQ5n

    #34261
    Nicholas CoxNicholas Cox
    Participant

    Ok I have checked the form and can confirm that I can see the mbfs_key.

    mbfs-key

    The form does process successfully if there are no validation errors. The error message only displays if you try to re-sumbit the same form after a first unsuccessful validation (with ajax).

    Hope this helps

    #34263
    Nicholas CoxNicholas Cox
    Participant

    I have done some screen recordings for you

    If the form fails validation and then you resubmit the form, the invalid error message displays.

    https://drive.google.com/file/d/1L6QiqZkXKsl70IdC_ajPM4TOk3mDXHxR/view?usp=sharing

    If there are no validation errors the first time, the same form submits successfully.

    https://drive.google.com/file/d/1moTAPLOdVy0X81NnXiqaOdgoIGr5Xjxe/view?usp=sharing

    also to note, this does not happen when ajax is not enabled; as I assume the page refresh has something to do with it.

    #34290
    Long NguyenLong Nguyen
    Moderator

    Hi,

    I'm not able to reproduce this issue on my local site, screen record https://monosnap.com/file/h8wFhZBQM4AEKylGz5l2y4Xo7f3esY

    If you have online hosting, please share the staging site credentials, I will help you to check the issue.

    #34305
    Nicholas CoxNicholas Cox
    Participant

    Hi Long,

    ok I have setup a staging website as I do not have a test environment.

    So I have cloned my local setup (no website design yet as I'm just developing)
    https://samsskip.co.uk/stg_155a6/

    with the following shortcode on the homepage
    [mb_frontend_form id="dc-product" confirmation="Your post has been successful" ajax="true"]

    then if you enter the word 'test' into the input field and then retry, the form fails.

    screen recording
    https://drive.google.com/file/d/1iOypa0dYmMin2YMCgyOqSMJI9qfFeKiE/view?usp=sharing

    if you need access to files/login then let me know so I can send you this privately.

    #34325
    Long NguyenLong Nguyen
    Moderator

    Hi,

    Please share your site credentials via this contact form https://metabox.io/contact/. I will forward this to the development team to take a closer look.

    Thank you.

    #34331
    Nicholas CoxNicholas Cox
    Participant

    Hi

    That would be great thanks! I am at a loss on what the issue is.

    I have sent an email just now via the contact form with admin access and ftp details.

    Thanks

    Nick

    #35401
    Long NguyenLong Nguyen
    Moderator

    Hi,

    Please update the plugin MB Frontend Submission ver 4.0.1 or Meta Box AIO ver 1.15.8 and re-check this issue. Let me know if it works.

    #35403
    Nicholas CoxNicholas Cox
    Participant

    Hi

    Thanks for looking into this. I have tested this and can confirm the issue has been fixed! I have tested a few forms and so far there has been no issues.

    Thanks

Viewing 10 posts - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.