[英]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.