/** Set AjaxQ Option */
wps_js.ajax_queue = {
key: 'wp-statistics',
time: 400 // millisecond
};
/**
* Base AjaxQ function For All request
*
* @param url
* @param params
* @param callback
* @param error_callback
* @param type
* @param internal
*/
wps_js.ajaxQ = function (url, params, callback, error_callback, type = 'GET', internal = true) {
// Check Url
if (url === false || url === "metabox") {
url = wps_js.global.meta_box_api;
}
// Add nonce to the params
params['wps_nonce'] = wps_js.global.rest_api_nonce;
// prepare Ajax Parameter
let ajaxQ = {
url: url,
type: type,
dataType: "json",
crossDomain: true,
cache: false,
data: params,
success: function (data) {
// Check Meta Box URL
if (url === wps_js.global.meta_box_api && internal === true) {
// Check is NO Data Meta Box
if (data['no_data']) {
jQuery(wps_js.meta_box_inner(params.name)).empty().html(wps_js.no_meta_box_data());
if (wps_js.is_active('overview_page') || wps_js.global.page.file === "index.php") {
wps_js.meta_box_footer(params.name, data);
}
} else {
// Show Meta Box
jQuery(wps_js.meta_box_inner(params.name)).empty().html(wps_js[callback]['view'](data));
// Check After Load Hook
if (wps_js[callback]['meta_box_init']) {
setTimeout(function () {
wps_js[callback]['meta_box_init'](data);
}, 150);
}
if (wps_js.is_active('overview_page') || wps_js.global.page.file === "index.php") {
wps_js.meta_box_footer(params.name, data);
}
}
} else {
// If Not Meta Box Ajax
wps_js[callback](data);
}
},
error: function (xhr, status, error) {
// Check Meta Box Error
if (url === wps_js.global.meta_box_api && internal === true) {
jQuery(wps_js.meta_box_inner(params.name)).empty().html(wps_js[error_callback](xhr.responseText));
} else {
// Global Call Back Error
wps_js[error_callback](xhr.responseText)
}
}
};
// Check WordPress REST-API Nonce [https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/ ]
if (url === wps_js.global.meta_box_api) {
ajaxQ.beforeSend = function (xhr) {
//xhr.setRequestHeader('X-WP-Nonce', wps_js.global.rest_api_nonce); commented because of the switching to admin-ajax.php
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
};
}
// Send Request and Get Response
jQuery.ajaxq(wps_js.ajax_queue.key, ajaxQ);
};