如何在不刷新页面的情况下使用 ajax 保存 acf_form

Posted

技术标签:

【中文标题】如何在不刷新页面的情况下使用 ajax 保存 acf_form【英文标题】:how to save acf_form using ajax without page refresh 【发布时间】:2016-05-05 15:22:08 【问题描述】:

我有这三个 acf_form。我想一一显示这些表单,并且我想通过 ajax 在按钮单击时保存每个表单而不刷新页面。现在,每当我更新时,它都会刷新页面。 我将使用 js 通过 display none & block 显示。

<div class="SetupNew">
            <h2>Setup Deals To Attract New Clientele</h2>
            <p>Example: buy $15 get $30 for services</p>
            <a href="javascript:void(0)"><p id="newDealsTxt">[Click Here To Setup] </p></a></div>
            <?php acf_form($args =  array(
                                          'post_id' => $post_id,
                                          'field_groups' => array(2029),
                                          'form_attributes' => array(
                                              'id'=>'newDeals'
                                           ),
                                      ));  ?>
            <div class="SetupEx">
            <h2>Setup Deals To Bring In Clientele During Nonpeak Hours</h2>
            <p>Example: buy $15 get $30 for services Tue-Thur 9am - 2pm.</p>          
            <a href="javascript:void(0)"><p id="exDealsTxt">[Click Here To Setup]</p></a></div>
            <?php  acf_form($args =  array(
                                          'post_id' => $post_id,
                                          'field_groups' => array(2047),
                                          'form_attributes' => array(
                                              'id'=>'exDeals'
                                          ),
                                      ));  ?>
            <div class="SetupFb">
            <h2>Setup $5 Off Coupon To Increase Testimonials And Sharing</h2>
            <p>Example: Leave a testimonial and get $5 off your next service.</p>
            <a href="javascript:void(0)"><p id="fbDealsTxt">[Click Here To Setup] </p></a></div>

            <?php  acf_form($args =  array(
                                          'post_id' => $post_id,
                                          'field_groups' => array(2123),
                                          'form_attributes' => array(
                                              'id'=>'fbDeals'
                                          ),
                                      ));  ?>
            <a href="javascript:void(0)"><h2 id="backk">Back << </h2>  </a>

【问题讨论】:

【参考方案1】:

这来得很晚,但我今天遇到了同样的问题。作为参考,这是我的 javascript:

// call this function on document ready or when your ajax page is loaded
function renderPage() 
  // initialize the acf script
  acf.do_action('ready', $('body'));

  // will be used to check if a form submit is for validation or for saving
  let isValidating = false;

  acf.add_action('validation_begin', () => 
    isValidating = true;
  );

  acf.add_action('submit', ($form) => 
    isValidating = false;
  );

  $('.acf-form').on('submit', (e) => 
    let $form = $(e.target);
    e.preventDefault();
    // if we are not validating, save the form data with our custom code.
    if( !isValidating ) 
      // lock the form
      acf.validation.toggle( $form, 'lock' );
      $.ajax(
        url: window.location.href,
        method: 'post',
        data: $form.serialize(),
        success: () => 
          // unlock the form
          acf.validation.toggle( $form, 'unlock' );
        
      );
    
  );

【讨论】:

以上是关于如何在不刷新页面的情况下使用 ajax 保存 acf_form的主要内容,如果未能解决你的问题,请参考以下文章

如何在不刷新的情况下使用 Ajax 在 ASP.NET MVC 中保存表单数据

引导切换以使用 AJAX 在不刷新页面的情况下更改 MySQL TINYINT

如何在不刷新的情况下使用Ajax在ASP.NET MVC中保存表单数据

如何在不使用 ajax 刷新的情况下在我的页面上显示我的 php 响应?

如何在不刷新html页面的情况下在表格上显示数据(使用nodejs和mysql ajax)

使用 ajax 在不刷新站点的情况下更改 mongoDB 中的某些项目