You're probably running in to the cross-domain request security restrictions imposed by browsers (aka CORS). See the AJAX manual entry for more details.
I'm sure it's not a cross domain problem. I comparing the code of c3&&c2 ajax plug,
the error trigger by this
async _TriggerError(tag, url, err) {
console.error(`[Construct 3] AJAX request to '${url}' (tag '${tag}') failed: `, err);
this._curTag = tag;
await this.TriggerAsync(C3.Plugins.AJAX.Cnds.OnAnyError);
await this.TriggerAsync(C3.Plugins.AJAX.Cnds.OnError)
}