簡體   English   中英

如何將兩個 ajax 請求合並為一個

[英]How to merge two ajax requests into one

我正在編輯 form-edit-account.php 模板。 此模板包含一個表單,允許用戶更改帳戶設置(姓名、姓氏、年齡等)。 最初表單沒有 ajax 請求,所以我添加它們以保存數據而不刷新頁面。 一切正常,但我對如何改進代碼有些疑問。

當單擊表單的提交按鈕時,在谷歌控制台網絡選項卡中,我看到有兩個請求,一個屬於 Ajax 處理錯誤,另一個屬於 Ajax 保存設置。

Ajax 處理錯誤允許我在不尊重表單字段時查看消息,如果一切順利,我可以查看成功消息。

Ajax 保存設置實際上保存數據而無需重新加載頁面。

我想做的是獲得一個請求(保存設置並顯示錯誤消息)。 是否可以將 ajax 處理錯誤代碼和 ajax 保存設置代碼合並到一個請求中而不是兩個?

表格末尾的js

jQuery(document).ready(function($) {
    
    $('.mts-edit-account').on('submit', function(e) {
        e.preventDefault();

    //Ajax Handling Error
        var $form = $(this);
        $.post($form.attr('action'), 
        $form.serialize(), 
        function(data) {
          jQuery('.woocommerce-notices-wrapper').html(data);
        }, 'json');

    //Ajax Save settings
    jQuery.ajax({
      type: "POST",
      data: jQuery(".mts-edit-account").serialize(),
      url: "wp-admin/admin-ajax.php",
    });

    });

});

功能。php

add_action( 'wp_ajax_save_account_details', 'save_account_details' );
add_action( 'wp_ajax_nopriv_save_account_details', 'save_account_details' );
function save_account_details() {
  if (trim($_POST['account_first_name']) == '') {
    wc_add_notice("<b>Nome</b> è un campo obbligatorio", "error");
    $response = wc_print_notices(true);
  } else{
    wc_add_notice("Modifiche salvate con successo", "success");
    $response = wc_print_notices(true);
  }
  echo json_encode($response);
  exit();
}

我找到了一個解決方案,我不知道它有多正確,我只是一個粉絲而不是程序員。 使用此解決方案,我只能在 google 控制台網卡中看到一個請求。 一切正常,數據已保存,消息正常。 我為與我處於相同情況的任何人發布以下解決方案。

我剛改了劇本

jQuery(document).ready(function($) {
    $('.mts-edit-account').on('submit', function(e) {
        e.preventDefault();

    //Ajax Handling Error
        var $form = $(this);
        jQuery.post(
      $form.attr('action'), 
      $form.serialize(), 
      function(data) {
        jQuery('.woocommerce-notices-wrapper').html(data);
          }, 'json'
    );

    //Ajax function
    jQuery.ajax({
      type: "post",
      data: jQuery(".mts-edit-account").serialize(),
    });
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM