Full-project rename. `git grep -i aksrt` is now empty apart from the
DBMigrator 3.3.0 changelog note that documents the rename itself.
Code identifiers
- PHP namespace AKSRT\ -> Jio\ (composer PSR-4 + 378 declarations)
- global constants AKSRT_* -> JIO_* (VERSION/DIR/URI, PAY_TYPE_*, CAPTCHA_*)
- procedural functions, hooks, options, meta keys, table names,
cookies, query vars, ajax actions and nonces: aksrt_ -> jio_
- text domain aksrt -> jio; Theme Name -> Jio
- JS globals: aksrtData/aksrtAdminData/... -> jioData/jioAdminData/...,
window.AKSRTCaptcha & friends -> window.JioCaptcha, Aksrt* -> Jio*
- Vue components Aks*.vue -> Jio*.vue (15 files renamed + imports)
- CSS classes/data-attrs/custom properties: aksrt- -> jio-
- REST namespace aksrt/v1 -> jio/v1 (incl. payment gateway callbacks)
Storage layer
- DB tables {prefix}aksrt_* -> {prefix}jio_*; SCHEMA_VERSION 3.2.0 -> 3.3.0
so dbDelta creates the new names on install
- widget id_base aksrt_widget_* -> jio_widget_*
- uninstall.php drop list rebuilt from the actual migrator tables
(dropped 3 stale entries, added the 17 missing ones)
Removed
- hardcoded https://api.aksrt.com/version.json default update endpoint;
get_endpoint() now reads the 「更新端点」 setting and do_check() no-ops
when it is empty
Files renamed: inc/helpers/aksrt-*.php -> jio-*.php (54),
assets/admin/src/components/form/Aks*.vue -> Jio*.vue (15).
Build artifacts regenerated: assets/css/build, assets/js/runtime,
assets/admin/build.
Verified: audit-psr4-paths errors=0, audit-admin-contracts errors=0
(warnings=56, unchanged baseline), 813/813 widget-system tests,
44/44 phpunit, php -l clean across all PHP.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
72 lines
2.7 KiB
JavaScript
72 lines
2.7 KiB
JavaScript
/**
|
||
* Jio AJAX Debug — 排查 vendor main.min.js / legacy_ajax 产生的失败请求
|
||
*
|
||
* 启用条件(见 inc/jio-ajax-debug.php):WP_DEBUG 开启,或 URL 带 ?jio_ajax_debug=1
|
||
*
|
||
* 输出:
|
||
* - [jio→ajax] 所有发往 admin-ajax.php 的 jQuery 请求(含 action 与参数)
|
||
* - [jio✗ajax] 所有失败的 jQuery 请求(url / data / status / responseText)
|
||
* - [jio✗fetch] 所有非 2xx 的 fetch 请求
|
||
*/
|
||
(function () {
|
||
'use strict';
|
||
|
||
var MAX_BODY = 500;
|
||
|
||
function clip(str) {
|
||
str = String(str == null ? '' : str);
|
||
return str.length > MAX_BODY ? str.slice(0, MAX_BODY) + '…(' + str.length + ')' : str;
|
||
}
|
||
|
||
function paramsToObject(data) {
|
||
if (!data) return null;
|
||
if (typeof data === 'string') {
|
||
try { return JSON.parse(data); } catch (e) { /* urlencoded */ }
|
||
var out = {};
|
||
new URLSearchParams(data).forEach(function (v, k) { out[k] = v; });
|
||
return out;
|
||
}
|
||
return data;
|
||
}
|
||
|
||
console.log('%c[jio] ajax 调试已开启(?jio_ajax_debug=1 或 WP_DEBUG)', 'color:#2abd4e;background:#16171a;padding:2px 6px;');
|
||
|
||
if (window.jQuery) {
|
||
jQuery(document).ajaxSend(function (e, jqXHR, settings) {
|
||
if (!settings || !settings.url || settings.url.indexOf('admin-ajax.php') === -1) return;
|
||
console.log('[jio→ajax]', settings.type || 'GET', settings.url, paramsToObject(settings.data));
|
||
});
|
||
|
||
jQuery(document).ajaxError(function (e, jqXHR, settings, thrownError) {
|
||
console.warn('[jio✗ajax]', (settings && settings.type) || '?', (settings && settings.url) || '?',
|
||
'data:', paramsToObject(settings && settings.data),
|
||
'status:', jqXHR && jqXHR.status,
|
||
'response:', clip(jqXHR && jqXHR.responseText),
|
||
'thrown:', thrownError);
|
||
// 定位触发元素:记录调用栈帮助回溯 legacy_ajax 调用来源
|
||
if (settings && settings.url && settings.url.indexOf('admin-ajax.php') !== -1) {
|
||
console.warn('[jio✗ajax] 发出的 action 参数见上方 data —— 在 admin-ajax 无对应处理器时 WP 返回 400 "0"');
|
||
}
|
||
});
|
||
} else {
|
||
console.warn('[jio] jQuery 未加载,ajax 调试仅覆盖 fetch');
|
||
}
|
||
|
||
var rawFetch = window.fetch;
|
||
if (typeof rawFetch === 'function') {
|
||
window.fetch = function () {
|
||
var args = arguments;
|
||
var url = typeof args[0] === 'string' ? args[0] : (args[0] && args[0].url) || '';
|
||
var body = args[1] && args[1].body;
|
||
return rawFetch.apply(this, args).then(function (res) {
|
||
if (!res.ok) {
|
||
res.clone().text().then(function (text) {
|
||
console.warn('[jio✗fetch]', res.status, url, 'body:', clip(body), 'response:', clip(text));
|
||
}).catch(function () {});
|
||
}
|
||
return res;
|
||
});
|
||
};
|
||
}
|
||
})();
|