I created a mundane shortcut for one of my controllers:
$routes->connect( '/mi/:action/*', ['controller' => 'MenuItems'] );
Turns out that when I try using the short version for an ajax action, I get an error (about needing a view, which I didn’t bother making for my action because all it returns is “ok” and “not ok”. I was puzzled because when I visited the url directly in my browser, it worked as expected. And, in another controller that doesn’t have a custom route, the exact same controller setup and code worked as expected. On a lark, I tried using the full controller name in my ajax call and… boom!… it worked as expected.
Thus, the custom route is somehow interfering in this situation and it’s puzzling how and why it would be the case.